在VC6中如何屏蔽“文本编辑框”的“回车键”???
在VC6中如何屏蔽“文本编辑框”的“回车键”??? 问题点数:100、回复次数:12Top
1 楼flyelf(空谷清音)回复于 2004-09-04 20:05:14 得分 10
PreTranslateMessage中对WM_KEYDOWN的VK_ENTER进行屏蔽Top
2 楼laiyiling(陌生人[MVP])回复于 2004-09-04 20:19:11 得分 30
CDialog::PreTranslateMessage(MSG* pMsg)
{
if(GetFocus()->GetDlgCtrlID() == IDC_EDIT1 ) //判断焦点是否在EDIT1上
if( pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN )//判断是否按回车
return TRUE;直接返回
return CDialog::PreTranslateMessage(pMsg);
}Top
3 楼jiangsheng(蒋晟.Net[MVP])回复于 2004-09-05 05:41:11 得分 10
在消息循环PeekMessage或者GetMessage之后,判断是否调用DispatchMessage。MFC的消息循环有调用CWnd::PreTranslateMessage,所以楼上的方法可以,如果不用MFC的话需要自己修改消息循环的处理过程Top
4 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-05 11:49:14 得分 5
楼上三位高人已经说了。
也可以派生CEdit的子类进行处理。Top
5 楼lixiaosan(小三)回复于 2004-09-06 09:26:10 得分 30
BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message == WM_KEYDOWN )
{
if(pMsg->hwnd == GetDlgItem(IDC_EDIT1)->m_hWnd)
{
switch( pMsg->wParam )
{
case VK_RETURN:
return TRUE;
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}Top
6 楼hslinux(幻世龙)回复于 2004-09-06 13:46:02 得分 0
学习ing。Top
7 楼winuxe(winuxe)回复于 2004-09-06 15:44:02 得分 5
也可以通过处理KEY_UP和KEY_DOWN事件来进行处理Top
8 楼he_zhidan(何志丹:www.dzlishi.net,www.vcshare.net)回复于 2004-09-06 16:03:57 得分 5
在VC6中如何屏蔽“文本编辑框”的“回车键”???
--------------
你不把want return选上就行了
默认是没有选上
你回车就把对话框关闭了
Top
9 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-09-06 16:31:23 得分 0
首先在控件的属性中去掉want return
然后可以拦截消息Top
10 楼tsys2000(☆唐僧☆)回复于 2004-09-07 08:24:52 得分 0
markTop
11 楼zhanglingfei(张飞)回复于 2004-09-07 22:00:30 得分 0
谢谢各位高手相助,问题解决了80%。还有一个小问题:Alt+F4怎么屏蔽?问题解决马上结帐。Top
12 楼winuxe(winuxe)回复于 2004-09-09 09:27:21 得分 5
两个办法,一是在F4按下时判断alt的状态。二是记录alt的keydown和keyup事件。Top




