SendMessgae
今天在看notepad2的源码时看到很多SendMessgae,不是很明白其作用,故把学习笔记记录下来。
英文文档:SendMessage | Microsoft Learn
函数原型
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam
)
函数介绍
SendMessgae函数会发送特定消息给一个或者多个窗口,并且调用这个窗口的窗口处理函数,需要注意的是只有窗口处理函数处理完了消息,SendMessage才会返回。PostMessage与SendMessgae函数的区别在于,PostMessgae会把消息发送给进程消息队列并且会立刻返回。
参数介绍
- hWnd:接收了消息的窗口处理函数的窗口的句柄
- Msg:要被发送出去的消息
- wParam:消息的附加参数
- lParam:消息的附加参数
函数依赖
头文件:winuser.h
库文件:coredll.lib
应用实例
窗口创建成功后,弹出创建成功的窗口
#include<Windows.h>LRESULT CALLBACK WndProc(HWND hWnd, UINT msgID, WPARAM wParam, LPARAM lParam)
{switch (msgID){case WM_DESTROY:PostQuitMessage(0);break;case WM_COMMAND:if (wParam == 10){MessageBox(hWnd, L"窗口创建成功", L"消息", 0);}break;}return DefWindowProc(hWnd, msgID, wParam, lParam);
}int CALLBACK WinMain(HINSTANCE hIns, HINSTANCE hPreIns, LPSTR lpCmdLine, int nCmdShow)
{WNDCLASS wc = { 0 };wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);wc.hCursor = NULL;wc.hIcon = NULL;wc.hInstance = hIns;wc.lpfnWndProc = WndProc;wc.lpszClassName = L"Main";wc.lpszMenuName = NULL;wc.style = CS_HREDRAW | CS_VREDRAW;RegisterClass(&wc);HWND hWnd = CreateWindowEx(0, L"Main", L"window", WS_OVERLAPPEDWINDOW, 100, 100, 500, 500, NULL, NULL, hIns, NULL);ShowWindow(hWnd, SW_SHOW);SendMessage(hWnd, WM_COMMAND, 10, 0);UpdateWindow(hWnd);MSG nMsg = { 0 };while (GetMessage(&nMsg, NULL, NULL, NULL)){TranslateMessage(&nMsg);DispatchMessage(&nMsg);}return 0;
}
SendMessgae相关推荐
- Windows消息机制要点
1. 窗口过程 每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle),消息ID(Message ID),和两个消息参数(wP ...
- windows消息机制深入详解-1
Windows 是一个事件驱动的操作系统.事件驱动围绕着消息的产生与处 理展开,事件驱动是靠消息循环机制来实现的.也可以理解为消息是一种报告有关事件发生 的通知,消息是Windows 操作系统的灵魂. ...
- MFC框架机制详细论述
1.1 Windows消息机制要点 1.1.1 窗口过程 每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle), 消息ID(Me ...
- 【转】Windows消息传递机制详解
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka Windows是一个消息(Message)驱动系统.Windows的消息提供了应用程序之间.应 ...
- Windows消息传递机制详解
Windows是一个消息(Message)驱动系统.Windows的消息提供了应用程序之间.应用程序与Windows系统之间进行通信的手段.应用程序想要实现的功能由消息来触发,并且靠对消息的响应和处理 ...
- win32开发(自定义消息)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 一般来说,windows除了提供的普通的消息处理机制之外,还提供了自定义消息的处理方法.这就是说 ...
- java super关键字_Java入门(二)下
点击蓝字关注我们 01 面向对象三大特性(2)---继承 一. 概念 继承是java三大特性之一(封装装,继承,多态).继承是从已有的类中派生出新的类.新的类继承原有类所有的属性和行为,并能拓展新的能 ...
- Vue基础——生命周期基础指令组件技术
Vue 一. 创建vue项目 tianqideMBP:try-vue tianqizhao$ vue init webpack hello? Project name hello ? Project ...
最新文章
- mysql中OPTIMIZE TABLE的作用
- Nuget多项目批量打包上传服务器的简明教程
- 自动摘要php,修改DEDECMS文章自动摘要长度或者取掉文章摘要
- 傅里叶变换 【完整版】
- 网络资产管理系统_网络版固定资产管理系统具备哪些优势?
- FPGA定点数字信号处理技巧(一)
- vscode-图片压缩
- 【linux】vi常用快捷键
- 微商怎么引流学生粉?如何把学生粉变现成精准粉?
- uni-app登陆成功跳转到首页后禁止回退到登陆页面
- HTTP状态码206和416
- Android Studio开发之获取Apk相关版本信息
- 手把手教你使用opensea
- 站群系统-常用的站群软件系统推荐
- 51实现微信蹦一蹦外挂demo
- 关于计算机技术在电力系统中的论文,论计算机技术在电力系统中的应用
- 提取Exif信息中GPS经纬度,转化为double方法
- Retrofit2.0 源码分析
- Ubuntu下使用Thunderbird收发QQ邮箱
- 疫情之下互联网跳槽面试全攻略