PeekMessage参数替PM_NOREMOVE取不自己发送的消息
PeekMessage参数为PM_NOREMOVE取不自己发送的消息?
新手刚学多线程,遇到如下问题:
在线程中更新控件数据,单击按钮发送 PostThreadMessage(WM_QUIT)
单在如下的线程中一直收不到消息。但PeekMessage参数改为PM_REMOVE后就可以收到.
什么原因呢?
------解决方案--------------------
貌似你如果不remove,你就只能不停地得到它。
------解决方案--------------------
++
必须从队列中删除,
该函数,需要特殊处理wm_quit 和wm_paint 。比如你的程序 随意处理wm_paitn.会造成
wm_paint一直存在。
新手刚学多线程,遇到如下问题:
在线程中更新控件数据,单击按钮发送 PostThreadMessage(WM_QUIT)
单在如下的线程中一直收不到消息。但PeekMessage参数改为PM_REMOVE后就可以收到.
什么原因呢?
while(1){
if (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if (msg.message == WM_QUIT)
{
AfxMessageBox(TEXT("收到QUIT消息"));
break;
}
}
else
{
if (progress*100 > 100.0)
{
break;
}
progress = byteReceived/fileSize;
byteReceived += 2;
texProgress.Format(TEXT("%.1f"),progress*100);
dlg->m_listCtrl.SetItemText(iTem,1,texProgress);
}
}
------解决方案--------------------
貌似你如果不remove,你就只能不停地得到它。
------解决方案--------------------
++
必须从队列中删除,
该函数,需要特殊处理wm_quit 和wm_paint 。比如你的程序 随意处理wm_paitn.会造成
wm_paint一直存在。