vc中的 drop down 类型的combo控件 如何响应回车事件
2010-06-04 16:26
465 查看
vc中的 drop down 类型的combo控件 如何响应回车事件
找到了两个答案
第一个答案试过,没有问题
转自http://topic.csdn.net/t/20040512/10/3057495.html
如下
BOOL CTestDlgChartDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if( pMsg-> message == WM_KEYDOWN )
{
switch( pMsg-> wParam )
{
case VK_RETURN:
CEdit *pEdit = (CEdit*)m_cb2.GetWindow(GW_CHILD);
if(pMsg-> hwnd == pEdit-> m_hWnd )
{
// GetDlgItem(IDC_EDIT1)-> SendMessage(WM_KILLFOCUS, 0, 0);
// GetDlgItem(IDC_EDIT2)-> SetFocus();
AfxMessageBox("jjj");
}
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
==========*****************
下面为第二个答案没有实际试过。
在Dialog中有一个Combo Box 控件,是drop down类型的,在其中可以输入数据,但是手动输入后,按回车,没有任何反应。
后来在网上查到,回车事件被主窗口截取了。
答案如下: 转自 http://topic.csdn.net/t/20050709/22/4134262.html
子类化组合框的子EDIT窗口,处理键盘消息。
对话框会默认处理回车消息,所以EDIT会收不到。要解决这个问题,你可以重载PreTranslateMessage消息来拦截回车消息。,如果是回车消息,则不交给默认处理函数
========================
lbird谢谢你的回答,我按照你的回答重载了组合框的子EDIT窗口以上的所有窗口的PreTranslateMessage函数,并且在函数中加上了如下代码:
if(pMsg-> message==WM_KEYDOWN && pMsg-> wParam==VK_RETURN)
return TRUE;
但是,按回车后还是没有反应,不知道为什么?
另外,你说的“重载PreTranslateMessage”,是指重载哪一个窗口的PreTranslateMessage?
=====================
搞定了,原来在组合框的子EDIT窗口以上的所有对话框窗口中要重载PreTranslateMessage函数,因为只要是对话框,就会将回车消息截下自己处理,而不会传递给下一窗口。并且RETURN值必须为FALSE,即不翻译消息,直接传递给下一窗口,如果为TRUE,就会翻译消息后退出消息传递。我已经完全理解了,谢谢!
找到了两个答案
第一个答案试过,没有问题
转自http://topic.csdn.net/t/20040512/10/3057495.html
如下
BOOL CTestDlgChartDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if( pMsg-> message == WM_KEYDOWN )
{
switch( pMsg-> wParam )
{
case VK_RETURN:
CEdit *pEdit = (CEdit*)m_cb2.GetWindow(GW_CHILD);
if(pMsg-> hwnd == pEdit-> m_hWnd )
{
// GetDlgItem(IDC_EDIT1)-> SendMessage(WM_KILLFOCUS, 0, 0);
// GetDlgItem(IDC_EDIT2)-> SetFocus();
AfxMessageBox("jjj");
}
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
==========*****************
下面为第二个答案没有实际试过。
在Dialog中有一个Combo Box 控件,是drop down类型的,在其中可以输入数据,但是手动输入后,按回车,没有任何反应。
后来在网上查到,回车事件被主窗口截取了。
答案如下: 转自 http://topic.csdn.net/t/20050709/22/4134262.html
子类化组合框的子EDIT窗口,处理键盘消息。
对话框会默认处理回车消息,所以EDIT会收不到。要解决这个问题,你可以重载PreTranslateMessage消息来拦截回车消息。,如果是回车消息,则不交给默认处理函数
========================
lbird谢谢你的回答,我按照你的回答重载了组合框的子EDIT窗口以上的所有窗口的PreTranslateMessage函数,并且在函数中加上了如下代码:
if(pMsg-> message==WM_KEYDOWN && pMsg-> wParam==VK_RETURN)
return TRUE;
但是,按回车后还是没有反应,不知道为什么?
另外,你说的“重载PreTranslateMessage”,是指重载哪一个窗口的PreTranslateMessage?
=====================
搞定了,原来在组合框的子EDIT窗口以上的所有对话框窗口中要重载PreTranslateMessage函数,因为只要是对话框,就会将回车消息截下自己处理,而不会传递给下一窗口。并且RETURN值必须为FALSE,即不翻译消息,直接传递给下一窗口,如果为TRUE,就会翻译消息后退出消息传递。我已经完全理解了,谢谢!
相关文章推荐
- VC对话框中树形控件节点编辑响应回车事件完成编辑
- asp.net如何在页面加载时响应回车事件
- Android深入探究笔记之二 -- 打开一个新的 Activity 并传递参数与如何响应控件的点击事件
- vc中如何响应键盘和鼠标事件
- CEdit控件如何获取回车事件
- 如何:响应 GridView 控件中的按钮事件
- vc中如何响应键盘和鼠标事件
- 如何让回车键和某个按钮响应相同事件
- VC控件----如何根据句柄判断其类型
- asp.net如何在页面加载时响应回车事件
- ASP.NET WEB控件如何添加控件事件的响应函数
- VC对话框控件不响应回车消息之解决方案
- VC控件----如何根据句柄判断其类型
- Android如何让ListView的子组件按钮响应单击事件并修改该项子控件内容
- asp.net如何在页面加载时响应回车事件
- asp.net如何在页面加载时响应回车事件
- 请问如何让验证控件只响应某个按钮,而对其他按钮的事件不进行响应
- asp.net如何在页面加载时响应回车事件
- VC对话框控件不响应回车消息之解决方案
- 如何将回车提交表单事件绑定到textbox控件?