如果有怎么一段简单的代码:  
 
int  WINAPI  WinMain(HINSTANCE,HINSTANCE,PSTR,int)  
{        
       int  i=0;  
       while(i  <100)  
     {  
         i++;  
       }  
       return  0;  
 
}  
其是否有消息队列存在?如果有,在程序运行的时候,能否用GetMessage(...)  
捕获到此线程的,诸如WM_KEYDOWN,WM_LBUTTONDOWN,WM_LBUTTONUP等鼠标,键盘消息?   

解决方案 »

  1.   

    在什么情况下才会有消息队列?
    我看到有资料说是“线程消息队列则由每个GUI线程自己进行维护,为避免给non-GUI线程创建消息队列,所有线程产生时并没有消息队列,仅当线程第一次调用GDI函数时系统给线程创建一个消息队列”
    是否正确
      

  2.   

    消息的初始接收器必须是窗口对象。Windows 消息通常直接由该窗口对象处理。(MSDN)
      

  3.   

    当一个线程第一次被建立时,系统假定线程不会被用于任何与用户相关的任务。这样可以减少线程对系统资源的要求。但是,一旦这个线程调用一个与图形用户界面有关的函数(例如检查它的消息队列或建立一个窗口),系统就会为该线程分配一些另外的资源,以便它能够执行与用户界面有关的任务。特别是,系统分配一个T H R E A D I N F O结构,并将这个数据结构与线程联系起来。摘自《windows核心编程》
      

  4.   

    codearts(代码艺术)
    谢谢,其他的各位大哥,你们能不能说详细点呢,谢谢你们!
      

  5.   

    主要考虑是否有GUI等界面处理,有了才会建立消息队列
      

  6.   

    #include <windows.h>
    #include <iostream.h>VOID CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nIDEvent, DWORD dwTime)
     {
         cout<<"aaaaa\n";
    }int main()
     {
        MSG Msg;
        UINT TimerId = SetTimer(NULL, 0, 1000, &TimerProc);
        while (GetMessage(&Msg, NULL, 0, 0))
    {
      
         DispatchMessage(&Msg); }            KillTimer(NULL, TimerId);
             return 0;
    }
    此程序因该是建立了一个消息队列,它是否有GUI的界面处理?