mfc怎么让combobox响应回车事件 15

比如在编辑框中输入字符串后按回车键我在一切论坛上看到的在派生CToolBar类的时候,注意如果用VC6的类向导,类列表里是没有CToolBar的,可以选择CToolBar... 比如在编辑框中输入字符串后按回车键
我在一切论坛上看到的
在派生CToolBar类的时候, 注意如果用VC6的类向导, 类列表里是没有CToolBar的, 可以选择CToolBarCtrl, 然后手动改为CToolBar( 参考 http://support.microsoft.com/kb/99161/en-us),//下面的代码是直接手写的#define IDC_COMBOBOX 11111class CToolBarEx : public CToolBar{ .........//其他的类代码省略 CComboBox m_Combo; afx_msg void OnSelectComboBox(); DECLARE_MESSAGE_MAP()};
BEGIN_MESSAGE_MAP(CToolBarEx, CToolBar) ON_CBN_SELENDOK(ID_COMBOBOX, OnSelectComboBox)END_MESSAGE_MAP()
void CToolBarEx::OnSelectComboBox(){} 在上面的一小段代码中, 我们添加了对CBN_SELENDOK消息的处理, 这个消息是CComboBox在完成选择后发送给父窗口的. 处理回车还需要在用户的VK_RETURN消息里模拟发送出这个CBN_SELENDOK消息.
所以我们还需要处理PreTranslateMessage函数.函数在类头文件的声明略.BOOL CToolBarEx::PreTranslateMessage(MSG* pMsg){ if (pMsg->message == WM_KEYDOWN) { NMHDR nm; nm.hwndFrom = m_hWnd; nm.idFrom = GetDlgCtrlID(); nm.code = NM_RETURN; switch (pMsg->wParam) { case VK_RETURN: //发送通知消息 if( m_Combo.IsChild(GetFocus()) ) OnSelectComboBox(); GetOwner()->SendMessage(WM_NOTIFY, nm.idFrom, (LPARAM)&nm); return TRUE; } } return CToolBar::PreTranslateMessage(pMsg);}
看不懂什么意思呀 大神帮忙解释下 小弟我是新手 麻烦详细些 谢谢啦!!!
展开
 我来答
jellycgl
2014-01-08 · TA获得超过417个赞
知道小有建树答主
回答量:1149
采纳率:66%
帮助的人:887万
展开全部
if (pMsg->message == WM_KEYDOWN) 如果有按键按下
case VK_RETURN: 按键是回车的话
if( m_Combo.IsChild(GetFocus()) ) 如果当前焦点在Commbox的子窗口上
OnSelectComboBox(); 执行操作
GetOwner()->SendMessage(WM_NOTIFY, nm.idFrom, (LPARAM)&nm); 通知更新
tayort
2014-01-21 · TA获得超过137个赞
知道答主
回答量:176
采纳率:0%
帮助的人:103万
展开全部
一般情况下控件是能响应到键盘和鼠标消息的 但在MFC下 大多数情况下 就把该消息过滤掉了
PreTranslateMessage 从字面就可以理解其意思 在这里可以响应绝大多数的消息
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式