今天在看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相关推荐

  1. Windows消息机制要点

    1. 窗口过程     每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle),消息ID(Message ID),和两个消息参数(wP ...

  2. windows消息机制深入详解-1

    Windows 是一个事件驱动的操作系统.事件驱动围绕着消息的产生与处 理展开,事件驱动是靠消息循环机制来实现的.也可以理解为消息是一种报告有关事件发生 的通知,消息是Windows 操作系统的灵魂. ...

  3. MFC框架机制详细论述

    1.1 Windows消息机制要点 1.1.1 窗口过程 ​ 每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle), 消息ID(Me ...

  4. 【转】Windows消息传递机制详解

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka Windows是一个消息(Message)驱动系统.Windows的消息提供了应用程序之间.应 ...

  5. Windows消息传递机制详解

    Windows是一个消息(Message)驱动系统.Windows的消息提供了应用程序之间.应用程序与Windows系统之间进行通信的手段.应用程序想要实现的功能由消息来触发,并且靠对消息的响应和处理 ...

  6. win32开发(自定义消息)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 一般来说,windows除了提供的普通的消息处理机制之外,还提供了自定义消息的处理方法.这就是说 ...

  7. java super关键字_Java入门(二)下

    点击蓝字关注我们 01 面向对象三大特性(2)---继承 一. 概念 继承是java三大特性之一(封装装,继承,多态).继承是从已有的类中派生出新的类.新的类继承原有类所有的属性和行为,并能拓展新的能 ...

  8. Vue基础——生命周期基础指令组件技术

    Vue 一. 创建vue项目 tianqideMBP:try-vue tianqizhao$ vue init webpack hello? Project name hello ? Project ...

最新文章

  1. mysql中OPTIMIZE TABLE的作用
  2. Nuget多项目批量打包上传服务器的简明教程
  3. 自动摘要php,修改DEDECMS文章自动摘要长度或者取掉文章摘要
  4. 傅里叶变换 【完整版】
  5. 网络资产管理系统_网络版固定资产管理系统具备哪些优势?
  6. FPGA定点数字信号处理技巧(一)
  7. vscode-图片压缩
  8. 【linux】vi常用快捷键
  9. 微商怎么引流学生粉?如何把学生粉变现成精准粉?
  10. uni-app登陆成功跳转到首页后禁止回退到登陆页面
  11. HTTP状态码206和416
  12. Android Studio开发之获取Apk相关版本信息
  13. 手把手教你使用opensea
  14. 站群系统-常用的站群软件系统推荐
  15. 51实现微信蹦一蹦外挂demo
  16. 关于计算机技术在电力系统中的论文,论计算机技术在电力系统中的应用
  17. 提取Exif信息中GPS经纬度,转化为double方法
  18. Retrofit2.0 源码分析
  19. Ubuntu下使用Thunderbird收发QQ邮箱
  20. 疫情之下互联网跳槽面试全攻略

热门文章

  1. 注册申请PayPal支付账户
  2. Mac 卸载自己安装的python
  3. 多元统计分析及R语言建模
  4. 【题解】NOIP-2016 天天爱跑步
  5. LE PETIT PRINCE
  6. win10锁屏聚集图片不更新,右上角没有出现喜欢的按钮,怎么办?
  7. 新玺配资:热点轮动明显 均衡配置策略
  8. 怎么样用计算机计算上浮的价格,原价上上涨百分比怎么算
  9. 什么是招聘测评工具?
  10. 大货跟踪程序精简版v1.20200731