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);等;

 


转载于:https://my.oschina.net/fengyeshangqing/blog/468269

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值