The WM_COMMAND message is sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated. WM_COMMAND消息在三种情况下被发送: 1.用户选择一个菜单项 2.控件向自己的父窗口发送通知消息 3.加速键被按下三种情况对应的wParam和lParam参数用法如下(MSDN):

Message Source wParam (high word) wParam (low word) lParam 
Menu 0 Menu identifier (IDM_*) 0 
Accelerator 1 Accelerator identifier (IDM_*) 0 
Control Control-defined notification code Control identifier Handle to the control window

注意一下wParam参数,被分为高字和低字,那当我们需要自己send WM_COMMAND 消息时,怎样来制作wParam参数呢?可以使用MAKEWPARAM宏,下面是我项目中的一句代码: SendMessage(WM_COMMAND,MAKEWPARAM(IDC_BUTTON_AMEND,BN_CLICKED),(LPARAM)listview->m_btnAmend.m_hWnd);     //发送一个按钮单击消息。

类似的宏还有: MAKELONG  制作一个长整型的参数

MAKELPARAM  制作一个lParam参数

MAKELRESULT 制作一个从窗口程序或者回调函数返回的32位值

MAKEWPARAM 宏 及MAKELONG ,MAKELPARAM,MAKELRESULT相关推荐

  1. MFC和c#中模拟对另一进程的窗口按钮点击

    1. 在自动化测试中经常要模拟窗口按钮的点击. 参考文章:http://blog.csdn.net/blackboyofsnp/article/details/3372719 有时我们需要这么做, 手 ...

  2. 必备绝技--Hook大法(上)

    必备绝技--Hook大法 标 题: [原创]必备绝技--Hook大法( 上 ) 作 者: Lvg 时 间: 2007-04-08,22:23 链 接: http://bbs.pediy.com/sho ...

  3. Windows xp下IDT Hook和GDT的学习

    一.前言   对于IDT第一次的认知是int 2e ,在系统调用的时候原来R3进入R0的方式就是通过int 2e自陷进入内核,然后进入KiSystemService函数,在根据系统服务调用号调用系统服 ...

  4. 6.7 【实例】窗口查看器

    6.7.1 窗口界面 程序06WinLooker中包含4个类,CMyApp(应用程序类).CMainWindow(主窗口类).CWindowInfo(管理目标窗口的类)和CMyButton(按钮类). ...

  5. 《Windows 程序设计(第3版)》——6.7 【实例】窗口查看器

    本节书摘来自异步社区<Windows 程序设计(第3版)>一书中的第6章,第6.7节,作者:王艳平 , 张铮著,更多章节内容可以访问云栖社区"异步社区"公众号查看 6. ...

  6. VC中的宏 (#define) 与预处理 (#if/#ifdef/#pragma) 的使用方法总结。

    C/C++ 预定义宏 例子:C/C++ 预定义宏的取值 C/C++ 预定义宏用途:诊断与调试输出 CRT 的诊断与调试输出:assert, _ASSERT/_ASSERTE, _RPTn/_RPTFn ...

  7. BYTE,WORD,DWORD的大小及一些特殊的高低位宏(取高位 取低位)

    一.定义 在VC6.0的Microsoft Visual Studio/VC98/Include/windef.h 里,定义了BYTE,WORD,DWORD typedef unsigned long ...

  8. MAKEWORD、HIWORD、LOWORD 宏定义

    MAKEWORD 宏定义 typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned long DWORD; t ...

  9. C++ 笔记(32)— 预处理、文件包含include、宏替换define、条件包含ifndef、define

    C/C++预处理器在源代码编译之前对其进行一些文本性质的操作. 它的主要任务包括删除注释 . 插入 #include 指令包含的文件的内容 . 定义和替换由 #defme 指令定义的符号以及确定代码的 ...

最新文章

  1. Matlab编程与数据类型 -- 出错处理语句try/catch/end
  2. 关于软件质量(2)- 开发 vs 测试
  3. C# delegate与event,委托与事件
  4. 你的存在,就是打我脸的
  5. 【spark系列3】spark开发简单指南
  6. iOS平台上的音视频即时通讯应用开发
  7. 基于安卓系统的服药监督系统(一)——可行性研究报告
  8. 软件著作权申请注意事项(微信小程序)
  9. 使用KXML解析xml数据
  10. 数据结构总结(线性结构,树型结构,图型结构,顺序结构,链式结构)
  11. css设置内外边距,css内外边距属性
  12. LaTeX技巧353:图片标题的字体大小怎么设定呢?
  13. oracle虚拟机安装苹果,虚拟机中如何安装MAC OS系统?虚拟机安装苹果系统教程
  14. 域名邮箱什么,如何开通自定义邮箱后缀的邮箱?
  15. element的el-table-column循环渲染和自定义列
  16. left join、right join、full join、inner join区别
  17. 模拟真人浏览网页-浏览器自动滚动-超简单方法
  18. 数据结构期末复习线性表(2)
  19. Win8快捷键收藏,效率党必备!珍惜生命者必备!
  20. 随机变量-离散-连续-假设检验方法

热门文章

  1. mysql删除以什么开头的数据_Mysql如何删除以“#sql-”开头的临时表
  2. 退格键删除input中光标指定的字符串_Linux中的vi 三种模式
  3. readyboost提升明显吗_iphone12promax参数对比11ProMax区别 性能提升多少
  4. 2019-11-18 惯性环节对脉冲的响应曲线怎么画是正确的
  5. CentOS7安装配置redis5.0.5
  6. ACM试题 - 括号配对问题 - Java中字符串截取和定位问题
  7. android 学习过程中登陆失效的个人理解
  8. javascript 中的各种width,height属性整理
  9. C# 深入浅出 委托与事件
  10. 如何打开.etl文件?