-
-
[旧帖]
[求助]MFC创建继承自CWinThread类的新UI线程消息响应问题
0.00雪花
-
发表于:
2013-1-19 16:49
1810
-
[旧帖] [求助]MFC创建继承自CWinThread类的新UI线程消息响应问题
0.00雪花
如题:MFC创建继承自CWinThread类的新UI线程消息响应问题
具体为,创建了一个基于MFC的DLL工程,添加了继承自CWinTread的类CMyUIThread,和继承自CDialog的类CMyDialog。
在DLL.CPP中添加自定义函数启动新UI线程
CWinThread* mythread = AfxBeginThread(RUNTIME_CLASS(CMyUIThread));
在CMyUIThread.CPP文件中添加代码创建窗口
BOOL CMyUIThread::InitInstance()
{
// TODO: 在此执行任意逐线程初始化
CMyDialog mydialog;
mydialog.DoModal();
return FALSE;
}
并在CMyDialog类中添加消息响应代码
void CDialogrxjh::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (VK_HOME == nChar)
{
if (1 == IsWindowVisible())
{
ShowWindow(SW_HIDE);
}
else if (0 == IsWindowVisible())
{
ShowWindow(SW_SHOW);
}
}
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
当mydialog窗口被激活的时候可以正常响应OnKeyDown消息将窗口隐藏,然后我在DLL.CPP文件中用自定义函数发送线程消息
mythread->PostThreadMessage(WM_KEYDOWN,VK_HOME,0x01470001); //PostThreadMessage(MSG,WPARAM,LPARAM)
然后当我在主程序窗口中按下HOME键时,新线程的OnKeyDown消息没有被响应!
这是为什么呢?
百度和谷歌上说线程必须有消息循环才能响应消息,但是MFC的UI线程不是自带消息循环的么??
为啥不响应OnKeyDown消息呢??
还是有哪里写错了???求帮忙解决下
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!