Como restringir a pasta de cópia em uma caixa de texto, no MFC?
-
22-09-2019 - |
Pergunta
Estou desenvolvendo uma pequena aplicação no MFC ... há um pequeno problema ... espero que vocês me ajudassem em relação a isso ... aqui vamos nós ... o problema é ... eu tenho 6 pouco controle de edição (caixa de texto) em que permitirei ao usuário inserir alguns números ... limitei o número de chars/caixa de texto como 4, mas está permitindo que o usuário copie e coloque n números ... como restringir a opção de pasta de cópia em uma edição controle .... por favor me ajude ...
Solução
Encontrei 2 maneiras de resolver o problema .... verifique o abaixo ...
1º método:
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()
};
Então você precisará editar o arquivo .cpp para esta classe como assim
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º método:Lidar com o On_en_change Evento e capture o texto no CString e verifique se é mais do que o personagem limitado ... se é ... você pode limpar a caixa de texto com uma mensagem de aviso ...