MINIGUI 中 GetMessage、TranslateMessage、DispatchMess

 

MINIGUI GetMessageTranslateMessageDispatchMessage

消息循环:

   while (GetMessage(&Msg, hMainWnd)) {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
}


分析:

  • GetMessage从消息队列中获取击键消息。

  • TranslateMessage把该消息转换成MSG_CHAR消息,这个消息是新产生的,并把该消息传送到窗口过程,注意:TranslateMessage并没有改变原击键消息。

  • DispatchMessage将击键消息原封不动的传送给窗口过程。并回调窗口过程函数。

 

处理击键消息和字符消息的基本规则是:如果需要读取输入到窗口的键盘字符, 那么用户可以处理 MSG_CHAR 消息。如果需要读取游标键、功能键、 Delete Insert Shift Ctrl 以及 Alt 键,那么用户可以处理 MSG_KEYDOWN 消息

 

总结:在消息循环中,窗口过程会先收到 击键消息转换生成的信的消息MSG_CHAR消息,再收到原封不动的击键消息,又由于上面的“处理击键消息和字符消息的基本规则“,因此,收到的击键消息(除了处理规则中的那几种键)用户不予处理,直接交给缺省处理函数,如:return DefaultMainWinProc(hWnd, message, wParam, lParam);等;

 


你可能感兴趣的:(消息循环,GetMessage,DispatchMessage,MINIGUI)