ZqrFerrari
努力学习,开心生活
在windows系统中,每个线程都对应一个消息队列(Message Queue),这是系统自动创建的。所以,如果想让窗口程序响应鼠标键盘操作的话,就要从这个消息队列里取得消息,然后根据消息做相应的响应函数。一般的做法是写一个消息循环(Message Loop),不断的从消息队列里提取消息、处理消息,直到程序退出。msdn给出的例子是这样写的:

while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
    if (bRet == -1)
    {
        // handle the error and possibly exit
    }
    else
    {
        if (hwndDlgModeless == (HWND) NULL ||
                !IsDialogMessage(hwndDlgModeless, &msg) &&
                !TranslateAccelerator(hwndMain, haccel,
                    &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
}

其中的GetMessage就是负责从消息队列中取得一个消息,它的原型如下
 GetMessage(  LPMSG lpMsg, HWND hWnd,UINT wMsgFilterMin, UINT wMsgFilterMax  )

posted on 2010-06-15 15:50  赵情融  阅读(378)  评论(0编辑  收藏  举报