CEdit中输入字符串

来源:互联网 发布:java继承和多态例子 编辑:程序博客网 时间:2024/06/03 17:52

你可以建立一个控件,继承于CEdit。然后用ClassWizard来处理WM_KEYDOWN消息。详细的方法可以参考下面的链接。 
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q104637

在CEdit 控件中检测键盘的输入并加以控制有多种发法。但是归根结底是接收CEdit 控件的Keydown消息,并且判断是否是需要的按键被按下。举个简单的例子说,如果你的应用程序是基于对话框的,只要重写CDialog的PreTranslateMessage函数就可以方便的完成这项任务。请参考以下的代码: 


BOOL CCeitDlg:reTranslateMessage(MSG* pMsg) 

HWND hwnd; 
GetDlgItem(IDC_EDIT1,&hwnd); //得到CEdit 的句柄 

if( pMsg->message == WM_KEYDOWN && pMsg->hwnd == hwnd) //判断如果是在CEdit中有按键按下 

if (( pMsg->wParam >= 'a' && pMsg ->wParam<='z') ||(pMsg->wParam >= 'A' && pMsg->wParam <= 'Z')) 
return CDialog:PreTranslateMessage(pMsg); 
//屏蔽了除a~z 和A~Z之外的所有的按键。(不包括PrintScreen ...) 
else 
return TRUE; 


return CDialog:PreTranslateMessage(pMsg); 


关于WM_KEYDOWN消息和PreTranslateMessage, 请参考相应的MSDN文档。 

当然你还需要添加一些代码来使这个控件更加完善。但是这样的方法却只能够用在一个应用程序当中,如果很多应用程序都要使用相同的这样的控件,那么考虑到重用性,可以用SubClass的方法。 


0 0
原创粉丝点击