Как ограничить копирование вставить в текстовом поле, в MFC?
Я занимаюсь разработкой небольшого приложения в MFC... есть небольшая проблема.. надеюсь, вы, ребята, помогли бы мне в этом вопросе... Итак, проблема... У меня есть 6 маленьких элементов управления редактированием (текстовое поле) в котором я позволю пользователю вводить некоторые числа.. Я ограничил число символов / текстового поля как 4, но это позволяет пользователю копировать и вставлять n чисел.... Как я могу ограничить опцию копирования вставить в редактировании контроль.... Пожалуйста, помогите мне...
1 ответ
Я нашел 2 способа решения проблемы.... пожалуйста, проверьте ниже...
1-й метод:
class CNoPasteEdit: public CEdit
{
public:
CNoPasteEdit();
~CNoPasteEdit();
protected:
// This line will need to be added by hand because WM_PASTE is not available in
// class wizard
afx_msg void OnPaste(WPARAM wParam, LPARAM lParam);
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
DECLARE_MESSAGE_MAP()
};
Затем вам нужно будет отредактировать файл.cpp для этого класса следующим образом
CNoPasteEdit::CNoPasteEdit(){
// Put any construction code here
}
CNoPasteEdit:~:CNoPasteEdit(){
// Put any destruction code here
}
BEGIN_MESSAGE_MAP(CNoPasteEdit, CEdit)
// This line is needed because there is no default macro for WM_PASTE messages
// This line will also need to be added by hand
ON_MESSAGE(WM_PASTE, OnPaste)
ON_WM_CONTEXTMENU()
END_MESSAGE_MAP()
void CNoPasteEdit::OnPaste(WPARAM wParam, LPARAM lParam){
// Put any code here you want to execute when the user right clicks on the edit
// control. Just leave it blank to disable the menu
}
void CNoPasteEdit::OnContextMenu(CWnd* pWnd, CPoint point){
// Put any code here you want to execute when the user tries to paste into the edit
// conrtol. Just leave it blank to prevent pasting.
}
2-й метод: обработать событие ON_EN_CHANGE, захватить текст в строке CString и проверить, не превышает ли он ограниченный символ... если его... вы можете очистить текстовое поле с помощью предупреждающего сообщения...