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 ...

Foi útil?

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 ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top