关于peekmessage的PM_REMOVE和PM_REMOVE问题
线程函数代码如下:
 static unsigned __stdcall TestThread(LPVOID)
{
MSG msg;
PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE);
int i = 0;
while(TRUE)
{
PeekMessage(&msg,NULL,WM_TEST,WM_TEST,PM_REMOVE);
switch(msg.message)
{
case WM_TEST:

i++;
break;
default:
break;
}
Sleep(1000);
}}
即使使用了PM_REMOVE,  在调试的时候 发现向线程发送一个wm_test消息,发现 case wm_test一直进来,也就是说,wm_test消息并未从消息队列删除。msdn上说peekmessage中如果使用pm_remove参数,除了(wm_paint),其他的消息都要被删除的,困惑中。

解决方案 »

  1.   

    关于peekmessage的PM_REMOVE和PM_REMOVE问题
    -----lz,你写错了么,怎么两个词语是一样的?
      

  2.   

    LZ怎么向线程发送的WM_TEST消息 ?
    应该向窗口发消息
      

  3.   

    to 1楼: 写错了 呵呵  是PM_REMOVE 和 PM_NOREMOVE
      

  4.   

    to 2 楼:   用的是PostThreadMessage
      

  5.   

    进程间的消息 sendmessage 和 postmessage是要通过窗口的  线程之间的消息用postthreadmessage吧
      

  6.   

    PM_NOREMOVE
    Messages are not removed from the queue after processing by PeekMessage.PM_REMOVE
    Messages are removed from the queue after processing by PeekMessage.