MFC中PeekMessage与GetMessage的区别

本文详细解析了PeekMessage和GetMessage两个Windows消息处理函数的区别。PeekMessage用于检查消息队列而不移除消息,适用于多线程或非阻塞场景;GetMessage则移除并处理消息,适合传统窗口应用程序。文章通过示例代码展示了两种函数的使用方法。

一、PeekMessage与GetMessage

`PeekMessage`函数可以从消息队列中获取消息,但是不会将该消息从队列中移除,可以理解为偷窥消息。该函数的原型如下:


BOOL PeekMessage(
  LPMSG lpMsg,
  HWND  hWnd,
  UINT  wMsgFilterMin,
  UINT  wMsgFilterMax,
  UINT  wRemoveMsg
);

GetMessage`函数会将获取的消息从队列中移除。该函数的原型如下:

BOOL GetMessage(
  LPMSG lpMsg,
  HWND  hWnd,
  UINT  wMsgFilterMin,
  UINT  wMsgFilterMax
);

 二、区别

  1. 消息处理方式:

    • PeekMessage:这个函数用于检查消息队列中是否有消息等待处理。如果有消息,它会将消息复制到指定的消息结构体,但不会将消息从队列中移除。这意着 PeekMessage 不会阻塞程序执行,它会立即返回,无论是否有消息。
    • GetMessage:与 PeekMessage 不同,GetMessage 会将消息从队列中移除并将其复制到指定的消息结构体中。如果队列中没有消息,GetMessage 会阻塞程序的执行,直到有消息到达为止。
  2. 适用场景:

    • PeekMessage:通常用于多线程应用程序或需要非阻塞方式处理消息的情况,例如游戏循环中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值