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);}
看不懂什么意思呀 大神帮忙解释下 小弟我是新手 麻烦详细些 谢谢啦!!! 展开
我在一切论坛上看到的
在派生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);}
看不懂什么意思呀 大神帮忙解释下 小弟我是新手 麻烦详细些 谢谢啦!!! 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询