Как ограничить копирование вставить в текстовом поле, в MFC? - PullRequest
2 голосов
/ 23 февраля 2010

Я занимаюсь разработкой небольшого приложения в MFC ... есть небольшая проблема .. надеюсь, вы, ребята, помогли бы мне в этом вопросе ... Итак, проблема ... проблема в том, что у меня 6 маленьких правок редактирования Текстовое поле), в котором я позволю пользователю вводить несколько чисел. Я ограничил число символов / текстового поля 4, но он позволяет пользователю копировать и вставлять n чисел .... Как ограничить параметр копирования и вставки в элементе управления Edit .... Пожалуйста, помогите мне ...

1 Ответ

1 голос
/ 23 февраля 2010

Я нашел 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 и проверьте, превышает ли он ограниченный символ ... если его ... вы можете очистить текстовое поле с помощью предупреждающего сообщения ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...