【WCE7】 PreTranslateMessage中doModal打开窗口后,过一段时间PostMessage就接收不到了
RT:
程序后台有一个线程,扫描矩阵键盘,并根据CWnd *dlgCurrent,发送按键消息
::PostMessage(dlgCurrent->m_hwnd, ...)
在主窗口和子窗口(Menu窗口)中都定义了PreTranslateMessage消息,
主窗体初始化时dlgCurrent = this。
运行程序后,主窗体可以接收相应的按键信息。
在按键消息中有一个是打开子窗体的
case MYKEY_MENU:
CMYMenu *dlgMenu = new CMYMenu();
dlgCurrent = dlgMenu;
dlgMenu.DoModal();
dlgCurrent = this;
...
刚打开Menu窗口时,键盘按键消息都正常。
不做任何操作,大约5分钟左右后,Menu窗口再也接收不到任何PostMessage的消息了。。。。
通过联调:
后台键盘扫描线程发送PostMessage时dlgCurrent数据正常(窗口指针什么的,都是指向Menu窗口的,前后对比);
Menu窗口正常显示;
Menu窗口析构函数增加了一段代码及断点,未见中断发生;
主窗体PreTranslateMessage里case MYKEY_MENU分支打开菜单窗口的前后都加了断点,未见异常退出发生。
为啥?
消息机制崩溃了吗?
该如何排查问题?