2010-02-23 4 views
2

Je suis en train de développer une petite application en MFC ... il y a un petit problème ... j'espère que vous m'aideriez à ce sujet ... Nous y voilà ... le problème est ... J'ai 6 petits contrôles d'édition (Texte boîte) dans lequel je vais permettre à l'utilisateur d'entrer des nombres .. J'ai limité le nombre de chars/textbox comme 4 mais il permet à l'utilisateur de copier et coller n nombres .... Comment puis-je restreindre l'option de copier coller dans un contrôle Edit .... S'il vous plaît aidez-moi ...comment restreindre copier coller dans une zone de texte, dans MFC?

Répondre

1

J'ai trouvé 2 façons de résoudre le problème .... s'il vous plaît vérifier le ci-dessous ...

1ère méthode:

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() 
}; 

Ensuite, vous devrez modifier le fichier .cpp pour cette classe comme si

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ème méthode: Manipulez le ON_EN_CHANGE événement et saisir le texte dans le CString et vérifier si son plus le caractère limité..si vous pouvez effacer la zone de texte avec un message d'avertissement ...

Questions connexes