首页 > 编程语言 >win32编程 -- 消息机制(二)

win32编程 -- 消息机制(二)

时间:2022-12-26 20:35:18浏览次数:42  
标签:MYMESSAGE 自定义 -- hWnd WM 编程 win32 nMsg 消息


我知道你最近很累,是那种看不见的身体上精神上的以及对未来的那种无力感,但请一定要坚持下去。。。

----  网易云热评

 

一、消息的获取

1、GetMessage:从系统获取消息,将消息从系统中移除,阻塞函数。当系统无消息时,GetMessage会等候下一条消息。

2、PeekMessage - 以查看的方式从系统获取消息,可以不将消息从系统移除,非阻塞函数。当系统无消息时,返回FALSE,继续执行后续代码。

BOOL PeekMessage(
LPMSG lpMsg, // 消息信息
HWND hWnd, // 消息句柄
UINT wMsgFilterMin, // 消息范围
UINT wMsgFilterMax, // 消息范围
UINT wRemoveMsg //移除标识
PM_REMOVE / PM_NOREMOVE
);

3、相关代码

void Message()
{
MSG nMsg = { 0 };
/*while (GetMessage(&nMsg, NULL, 0, 0))
{
TranslateMessage(&nMsg);
DispatchMessage(&nMsg);
}*/
while (true)
{
if (PeekMessage(&nMsg,NULL,0,0,PM_NOREMOVE))
{
//有消息
if (GetMessage(&nMsg, NULL, 0, 0))
{
//不是WM_QUIT
TranslateMessage(&nMsg);
DispatchMessage(&nMsg);
}
else
{//是WM_QUIT
return;
}
;
}//没有消息
else
{
//空闲处理
WriteConsole(g_接受句柄, L"哎呦", 6, NULL, NULL);;
}
}
}

 

二、消息的发送

1、SendMessage:发送消息,会等候消息处理的结果。

2、PostMessage:投递消息,消息发出后立刻返回,不等候消息执行结果。

WM_QUIT用到的就是这个
BOOL SendMessage / PostMessage(
HWND hWnd, //消息发送的目的窗口
UINT Msg, //消息ID
WPARAM wParam, //消息参数
LPARAM lParam //消息参数
);

 

三、消息的分类

1、系统消息:ID范围 0 - 0x03FF,由系统定义好的消息,可以在程序中直接使用。 

2、 用户自定义消息:ID范围 0x0400 - 0x7FFF,由用户自己定义,满足用户自己的需求。由用户自己发出消息,并响应处理,自定义消息可以任何位置发送

自定义消息宏:WM_USER    

#define WM_MYMESSAGE WM_USER+n 

3、应用程序消息 - ID范围 0x8000 - 0xBFFF,程序之间通讯时使用的消息。,应用程序消息宏:WM_APP

4、系统注册消息 - ID范围 0xC000 - 0xFFFF,在系统注册并生成相应消息,然后可以在各个程序中使用这个消息。

5、相关代码

 

//定义消息宏
#define WM_MYMESSAGE WM_USER+1001
//发送消息
SendMessage(hWnd, WM_MYMESSAGE, 100, 200);//窗口之前就出来
//PostMessage(hWnd, WM_MYMESSAGE, 100, 200);//窗口之后才出来
//消息处理内容
void 自定义消息(HWND hWnd,WPARAM wParam,LPARAM lPaerm)
{
wchar_t str[256] = { 0 };
swprintf_s(str, L"自定义消息被处理了:%d", lPaerm);
MessageBox(hWnd, str, L"哎呦", MB_OK);
}
case WM_MYMESSAGE:
自定义消息(hWnd, wParam, lParam);
break;

6、运行结果

win32编程 -- 消息机制(二)_发送消息

 

欢迎关注公众号:顺便编点程

win32编程 -- 消息机制(二)_发送消息_02

 

标签:MYMESSAGE,自定义,--,hWnd,WM,编程,win32,nMsg,消息
From: https://blog.51cto.com/u_15288375/5970877

相关文章

  • win32编程 -- 窗口注册与创建
    你学不进的东西有人学,你不经历的有人经历,你吃不了的苦有人吃,想让人望而生畏,就要拿出常人百倍的野心去奋斗。。。---- 网易云热评 一、窗口类窗口类包含了窗口的各种参数......
  • win32编程 -- 通过空项目学习自动生成的代码框架
    将喜欢的东西留在身边,这就是努力的意义。。。---- 网易云热评一、新建空项目 二、右击项目查看属性,修改项目字符集的属性为多字节 三、右击项目,添加c++文件 四、添加代......
  • 动态规划算法
    动态规划基本概念阶段问题的过程被分成若干相互联系的部分,我们成为阶段,以便按一定的次序求解。状态某一阶段的出发位置成为状态,通常一个阶段包含若干状态。决策对问......
  • 自制一个极限精简的起始页
    概括起来讲:约等于空白页有一日我望着青柠心想,我需要的起始页,或许只是空白页,但是为了让起始页不至于那么单调,于是我就将背景做成了必应的每日一图(CSS来自梧桐)。之后我又加......
  • win32编程 -- 消息机制(一)
    你多少岁不重要,看起来像几岁才重要,不要把辛苦和怨气都挂在脸上,你想要最好的生活,就先让生活看到最好的你。。。。---- 网易云热评 一、程序执行机制1、过程驱动-程序的......
  • Docker操作镜像、容器
                                                         ......
  • 华为全球加速GA带给你稳定的网络体验!
    越来越多的华为云的企业客户开始寻求海外市场的拓展,服务全球更多的终端用户,扩大服务范围和领域,但是多地部署的服务器资源,长距离交互容易导致用户体验劣化的问题成为业务发展......
  • Codeforces Global Round 14 C. Phoenix and Towers(思维)
    https://codeforces.com/contest/1515/problem/C题目大意:给定一个长度为n的序列a,ai表示方块的高度。每一个方块的高度都在1和q之间。让我们用这n个方块搭建m座塔,两两......
  • kali切换root用户及搜狗安装
    散伙是人间常态,你我又不是什么例外,只是很遗憾,没有成为你的偏爱,你却成为我爱不得的遗憾。。。---- 网易云热评 一、切换root用户登录1、sodusu切换为root权限2、passwdr......
  • windows编程基础
    散伙是人间常态,你我又不是什么例外,只是很遗憾,没有成为你的偏爱,你却成为我爱不得的遗憾。。。---- 网易云热评一、Windows应用程序的类型1、控制台程序Console    DOS......