GetMessage PeekMessage SendMessage PostMessage

PostMessage函数的使用实例 迅雷看看“本片即将结束,你可能也喜欢以下内容”提示的去除工具。其中包含可执行程序及源代码。涉及到的开发工具:vc6.0及spy++。详见http://blog.youkuaiyun.com/wwwwws/article/details/9433817 立即下载

GetMessage () and PeekMessage ()
GetMessage 其唯一用途就是从事件对列中获得消息,并进行处理。当程序在等待通过 GetMessage 传递的消息时,主事件循坏基本上是锁定的。
那,如果我们要处理实时的事件循坏该怎么办呢?Windows 为我们提供了另一个函数 PeekMessage,他们的原型几乎是一样的,唯一的不同是 PeekMessage 比 GetMessage 多了一个参数:UINT wRemoveMsg // removal flags。
对于wRemoveMsg ,有效的标志有
PM_NOREMOVE,PeekMessage 处理之后,消息没有从序列中去除
PM_REMOVE,PeekMessage 处理之后,消息已经从序列中去除
怎样来实现实时事件循坏呢?
通过利用PeekMessage 来判断消息序列中是否有消息,如果有,就处理它;否则继续处理其他的游戏逻辑并重复进行。
他们的函数原型如下:
BOOL GetMessage (
 LPMSG lpMsg, // pointer to structure for message
 HWND hWnd, // handle to window
 UINT wMsgFilterMin, // first message
 UINT wMsgFilterMax ) // last message
 
BOOL PeekMessage (
 LPMSG lpMsg, // pointer to structure for message
 HWND hWnd, // handle to window
 UINT wMsgFilterMin, // first message
 UINT wMsgFilterMax, // last message
 UINT wRemoveMsg ); // removal flags
 
SendMessage () and PostMessage ()
SendMessage 向窗口传递一个要求立即处理的消息。接收窗口处理完该消息后,该函数便紧接着 WinProc 返回。是同步的。
PostMessage 将消息发往窗口的消息序列,而后直接返回。如果不在意在消息被处理以前的时间延迟,或者该消息的优先级较低,就可以使用该函数。是异步的。
这两个函数的原型几乎一样,唯一的不同是返回值不同。SendMessage 返回 LRESULT,PostMessage 返回的是 BOOL。他们的函数原型如下:
LRESULT SendMessage ( HWND hWnd, UINT Msg, WPARAM wParam, r
 LPARAM lParam);  非队列消息
BOOL PostMessage ( HWND hWnd, UINT Msg, WPARAM wParam, 

 LPARAM lParam); 队列消息

 

typedef struct tagMSG { 
    HWND hwnd; //接收消息的窗口句柄  UINT message; //消息标识(ID)
    WPARAM wParam; LPARAM lParam; 
    DWORD time;// 消息产生的时间  POINT pt;// 消息产生时鼠标的位置
} MSG; 
键盘、鼠标消息以外,队列消息还有WM_PAINT、WM_TIMER和WM_QUIT。 
while (GetMessage(&msg, (HWND) NULL, 0, 0)) {//从消息队列得到消息 
       if (hwndDlgModeless == (HWND) NULL || !IsDialogMessage(hwndDlgModeless, &msg) && !TranslateAccelerator(hwndMain, haccel, &msg)) { //不是对话框消息和快捷键消息
     TranslateMessage(&msg); 
      DispatchMessage(&msg); //发送消息 
} } 
 

当得到消息WM_QUIT,或者::GetMessage出错时,退出消息循环。
系统消息ID的范围是从0到WM_USER-1,或0X80000到0XBFFFF;应用程序消息从WM_USER(0X0400)到0X7FFF,或 0XC000到0XFFFF;WM_USER到0X7FFF范围的消息由应用程序自己使用;0XC000到0XFFFF范围的消息用来和其他应用程序通信,为了ID的唯一性,使用::RegisterWindowMessage来得到该范围的消息ID。 
Ubuntu下NVIDIA驱动安装全攻略:从报错到完美运行nvidia-smi的完整流程 本文提供了在Ubuntu系统中安装NVIDIA驱动的完整解决方案,重点解决因驱动版本冲突、内核模块未加载或Secure Boot安全启动导致的`nvidia-smi`报错问题。通过彻底清理旧驱动、处理Secure Boot、选择兼容版本并正确安装,最终确保驱动完美运行。 阅读详情

相关推荐

cartographer错误终结者 ordered_multi_queue.cc:155 Queue waiting for data

错误描述 错误提示的感应器数据可能是: Queue waiting for data:(0, points2) Queue waiting for data:(0, odom) 说明在提供给cartographter的传感器数据出现了问题,没有被成功解析。 原因分析 小编是使用自己编写的odom话题发布时,cartographer爆出了该错误。 于是设想传感器数据相关的tf或lua配置或数据本身存在错误。 于是逐个排查,最终发现了错误原因。 排查可能原因:tf错误 小编之前已处理过tf与lua配置的问题 参

人工智能机器人 4157

GetMessage/PeekMessage、SendMessage/PostMessage

 1 GetMessage与PeekMessage (1)GetMessgae函数原型为: GetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax ); 参数: lpMsg:指向MSG结构的指针,该结构从线程的消息队列里接收消息信息。 hWnd:取得其消息的窗口的句柄。当其值取NULL时,G...

路漫漫其修远兮 1081

别再搞混了!Vue3里xgplayer播放FLV视频与FLV直播流,配置到底差在哪?

本文详细解析了在Vue3项目中使用xgplayer播放FLV视频与FLV直播流的配置差异,帮助开发者避免常见错误。通过对比点播与直播的核心协议差异、插件选择及配置参数,提供实战代码示例和性能优化技巧,确保流畅播放体验。特别针对直播流场景,深入讲解专属配置和问题排查方法。

weixin_28687331的博客 150

PeekMessage, GetMessage, PostMessage, SendMessage

1.peekmessage,getmessage区别 区别一: 他们如果没有捕获到消息,程序的主线程会被操作系统挂起。当操作系统再次回来照顾此线程时,发现消息队列中仍然没有消息可取,此时两个函数的行为就 不同了: peekmessage不管消息队列里有没有消息都会马上返回,有消息返回消息,没消息返回空值, getmessage等待到有消息的时候才返回, 区别二: peekmes...

weixin_30466953的博客 187

SQL 通过sum() over(order by ,rownum)实现财务现金日记账实例

SELECT 类型,to_char(发生日期,'yyyy-MM-dd') 发生日期,期初余额,借方金额,贷方金额, (CASE WHEN 借方金额>0 THEN '借' WHEN 贷方金额>0 THEN '贷' ELSE '平' END) 方向, sum(收支金额) over(order by 发生日期, rownum) 余额 FROM( SELECT LX 类型,账户,账号,摘要,发生日期,单据ID, ...

qq_41451794的博客 1023

ARM CMSIS DAP源码分析(二)

今天分析的是RDDI_DAP_GetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)和RDDI_DAP_SetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)这两个函数。 以RDDI_DAP_GetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)为例,代码如下:

pengxiao618的专栏 7977

Win32 API消息函数:GetMessage

Win32 API消息函数:GetMessage    函数功能:该函数从调用线程的消息队列里取得一个消息并将其放于指定的结构。此函数可取得与指定窗口联系的消息和由PostThreadMesssge寄送的线程消息。此函数接收一定范围的消息值。GetMessage不接收属于其他线程或应用程序的消息。    函数原型:BOOL GetMessage(LPMSG lpMsg,HWND hWnd,UINT

jianxiong8814的专栏 2578

28、时间敏感网络中可靠性感知的综合路由与调度

本文针对时间敏感网络(TSN)中现有路由与调度机制主要关注时间触发(TT)流量而忽略其他类型流量效用的问题,提出了一种可靠性感知的综合路由与调度机制。通过将具有不同可靠性和延迟要求的各类流量的联合路由与调度问题形式化为基于优化模理论(OMT)的混合整数规划问题,设计了完整的路由约束与调度约束,并分析了不同类型流量的传输效用,设定了优化目标以提升整体网络性能。实验结果表明,该机制在满足TT流量严格时延与可靠性要求的同时,显著提高了AVB和BE等非关键流量的传输效用,实现了多类型流量的高效协同传输。

hhh00的博客 95

GetMessage () and PeekMessage () and SendMessage () and PostMessage ()

   GetMessage () and PeekMessage ()GetMessage 其唯一用途就是从事件对列中获得消息,并进行处理。当程序在等待通过 GetMessage 传递的消息时,主事件循坏基本上是锁定的。那,如果我们要处理实时的事件循坏该怎么办呢?Windows 为我们提供了另一个函数 PeekMessage,他们的原型几乎是一样的,唯一的不同是 PeekMessa

Kisser Loves C++ 1357

虚拟机安装VMware Tools

单击虚拟机-->安装VMware Tool 安装之后会有一个VMware Tools硬盘,里面有VMware Tools.tar.gz的压缩包 按照提示解压它,然后执行vmware-install.pl安装VMware Tools 将安装包放到/tmp目录下。可以直接拽过去,也可以使用cp或者mv命令 进入tmp文件目录并解压此文件包 cd /tmp ...

afei001 620

医疗工具识别(手术器械计数):基于YOLOv8的智能手术器械管理系统

YOLOv8是Ultralytics公司于2023年推出的最新一代目标检测算法,相比前代YOLOv5,在精度和速度上都有显著提升。Anchor-free检测:不再使用预定义的anchor boxes,简化了检测流程更高效的骨干网络:采用CSPDarknet53作为特征提取网络多尺度特征融合:通过PANet结构实现更好的小目标检测损失函数优化:使用CIoU损失提高边界框回归精度YOLOv8提供了多种规模的模型(n/s/m/l/x),可根据实际需求在精度和速度之间进行权衡。

YOLO 480

GetMessage&PeekMessage 和SendMessage&PostMessage

在Window 下Chromium 利用了MFC 消息循环机制,借此,对MFC中消息获取和投放的几个函数进行总结下: 一、GetMessage&PeekMessage GetMessage 函数结构如下: BOOL GetMessage( LPMSG lpMsg, // 一个MSG的指针 HWND hWnd, // 一般为当前窗

Super爬爬虫 3329

从零搭建 SAP ALE/IDoc:自定义 IDoc 结构、Outbound 发送、Inbound 入库与排错全流程

本文介绍了SAP系统中ALE和IDoc技术的应用,用于解决分布式系统集成中的数据传递问题。主要内容包括: ALE/IDoc技术概述 ALE通过消息驱动方式实现业务数据传递 IDoc作为标准化数据信封,包含控制信息、业务数据和状态记录 支持SAP与非SAP系统间集成 核心概念 ALE的价值在于业务消息传递而非远程调用 IDoc由控制记录、数据记录和状态记录三部分组成 WE60工具用于查看IDoc文档结构 实践案例 演示如何将自定义业务表数据打包为IDoc 详细说明IDoc结构定义步骤(段、基本类型、消息类型)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 318

PostMessage与SendMessage、GetMessage与PeekMessage

<br />Windows编程中一个比较原始的问题就是消息循环,现在很少有人关心这些了;<br />  我个人对消息循环比较感兴趣,对底层的很多细节想深入了解!<br />  以下说明几个消息循环中的常用函数进行对比<br />1 PostMessage 与 SendMessage 函数对比<br />  SendMessage把消息直接发送到窗口,并调用此窗口的相应消息处理函数,等消息处理函数结束后SendMessage才返回!SendMessage发送的消息不进入系统的消息队列;SendMessage函

s030501408的专栏 846

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

GetMessage(), PeekMessage(), PostMessage(), SendMessage()

一天到晚游泳的鱼的专栏 1060

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SendMessage 和 PostMessage , GetMessage 和 PeekMessage区别

1.SendMessage 和 PostMessagePostMessage 和SendMessage的区别主要在于是否等待其他程序消息处理。PostMessage只是把消息放入队列,不管其他程序是否处理都返回,然后继续执行;而SendMessage必须等待其他程序处理消息后才返回,继续执行。这两个函数的返回值也不同,PostMessage的返回值表示PostMessage函数执行是否正确,而

zhengbo2006的专栏 681

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

笔记_postMessage/sendMessage/getMessage/peekMessage

1、 首先PostMessage是异步消息投放,SendMessage是同步消息投放 函数原型: LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam); 同步投放的SendMessage函数并不讲消息放到消息队列中,而是直接为制定窗口调用函数处理函数,待消息处理函数完成处理后,并将消息处理函数的结果返回。

QHjust的博客 715

peekmessage与GetMessage和VC之SendMessage与PostMessage的区别

转载自:http://blog.youkuaiyun.com/whui19890911/article/details/8693872 SendMessage与PostMessage的区别:SendMessage函數是阻塞的。PostMessage函數是非阻塞的。 SendMessage: 函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到

zhouyelihua 1847

peekmessage getmessage postmessage sendmessage

peekmessage  getmessage  postmessage sendmessage

jiht594的专栏 542

ShowWindow, UpdateWindow, SendMessage, PostMessage, PeekMessage, GetMessage

ShowWindow与UpdateWindow CWnd::UpdateWindow()        In MSDN:Updates the client area by sending a WM_PAINT message if the update region is not empty.The UpdateWindow member function sends a WM_

guanghuatan的专栏 1198

PostMessage和SendMessage、GetMessage和PeekMessage的区别

  PostMessage是把一个消息放到其他程序的消息队列之中并立即返回,目标程序收到了这条消息就把它放到该程序的消息队列去处理;而SendMessage则越过消息队列直接调用目标程序的窗口过程(多数情况下通过共享内存来实现),窗口过程返回以后才从SendMessage返回。    对于普通消息来说,PostMessage和SendMessage处理在处理速度上有所区别外,其他表现都相同。但是对于像WM_SETTEXT、WM_COPYDATA等参数中用到指针的消息来说,用PostMessage来发送消

softdzf的专栏 1212

ShowWindow, UpdateWindow, SendMessage, PostMessage, PeekMessage, GetMessage

ShowWindow与UpdateWindow CWnd::UpdateWindow()        In MSDN:Updates the client area by sending a WM_PAINT message if the update region is not empty.The UpdateWindow member function sends a WM_

Angry 刀刀 826

PeekMessage/GetMessage SendMessage和PostMessage SendMessageTimeOut

1.PeekMessage/GetMessage   两个函数主要有以下两个区别:     1.GetMessage只有在等到消息时才返回,没有消息时就会阻塞线程,这时线程的时间片将会被出让给别的线程。而且当GetMessage遇到WM_QUIT时,将会返回0.       而PeekMessage只是检查一下消息队列,有没有消息都会立即返回,只是在没有消息的时候返回值为0. 所以Peek

jiangdewei2012的专栏 749

PostMessage,SendMessage,GetMessage,PeekMessage,TranslateMessage,DispatchMessage的用法集合

SendMessage函数功能描述:将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口过程,直到窗口过程处理完消息后才返回。 Postmessage函数则是将消息放入消息队列里,并立即返回。 PostThreadMessage函数:  BOOL PostThreadMessage( DWORD idThread, UINT M

Invoker's Tower 3402
上一篇: 管道(Pipe)/createPipe
下一篇: CreateFileMapping/OpenFileMapping/MapViewOfFile
rubyzhudragon
博客等级 码龄18年 18粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值