views:

204

answers:

1

hello friends,I am developing a small application in MFC... there is a little problem..hope you guys would help me regarding this...Here we go..the problem is...I have 6 little edit control(Text box) in which I will allow the user to enter some numbers..I have limited the number of chars/textbox as 4 but its allowing the user to copy and paste n numbers....How do I restrict the copy paste option in an Edit control....Please help me...

A: 

I found 2 ways of solving the problem....please check the below...

1st method: 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() };

Then you will need to edit the .cpp file for this class like so

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

2nd method: Handle the ON_EN_CHANGE event and capture the text in the CString and check if its more than the limited character..if its..you can clear the text box with a warning message...

kiddo