PreTranslateMessage截获子窗口的消息
最近在搞一个小工具,当点击某个菜单时弹出一个对话框,对话框里面有个ComboBox控件,在我的主程序中我实现了虚函数PreTranslateMessage,这时问题出现了:
当我点击ComboBox控件使其下拉的时候,下拉条总是一闪而过(下拉之后自动收回),而且这时候对话框失去焦点,使得程序无法选择ComboBox里面的内容。
在搜遍了很多资料之后,发现是PreTranslateMessage处理了本该由子对话框处理的消息,于是在主程序的PreTranslateMessage中加了一句话判断消息的来源是否来自主程序的窗口:
BOOL CLockDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->hwnd == this->m_hWnd)
{
//本窗口的消息
}
return CDialog::PreTranslateMessage(pMsg);
}
windows消息处理机制需要多联系多总结。一味看书貌似作用不大。出现问题在看书。