从发送Button Clicked消息开始

       因为自己的工作,接触VC++的机会不多,所以对Windows消息处理机制不是很熟。

       这天,刚好需要一个功能,伪装发送一个Button Clicked的消息。之后就百度啊,CSDN啊,现在来总结下。

 

       Windows操作系统中包括以下几种消息:

1、标准Windows消息:

WM_COMMAND之外,所有以WM_开头的消息都是标准消息。从CWnd派生的类,都可以接收到这类消息。

2、命令消息

来自菜单,加速键或工具栏按钮的消息。这类消息都以WM_COMMAND形式呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。从CCmdTarget派生的类,都可以接收到这类消息。

3、通知消息

由控件产生的消息。这类消息也是以WM_COMMANDWM_NOTIFY等形式呈现,从CCmdTarget派生的类,都可以接收到这类消息。

这些控件包括:按钮(Button)、组合框(ComboBox)、编辑框(TextBox)、列表框(ListBox)、ListView控件、Treeview控件、工具条(Toolbar)、菜单(Menu)等。

WM_COMMANDWM_NOTIFY消息都是WINDOWS CONTROL给它的父窗体发的消息,那这两种消息有什么不同呢?WM_COMMAND消息其实是早期的(WIN3.X时代)子窗体消息,子窗体给父窗体发送消息,父窗体就捕获WM_COMMAND来处理子窗体的消息。但是这个消息只包括了有限的信息,例如wParam包括了子窗口ID和通知码,lParam则包括了子窗口句柄,就这点信息了,如果想知道一些额外的信息的话(例如,鼠标点在了子控件的位置)就要借助于其他的WM_*消息。所以对于新型的WIN32控件,微软就增加了一个新的WM_NOTIFY消息,这个消息的参数是这样的:wParam包含了控件ID,而lParam则包含了一个结构体的指针,这个结构体是NMHDR结构或者以NMHDR结构为第一项的一个更大的结构体。这样就可以包含了很多的子控件想给父窗体提供的信息了,甚至可以自己去定义这种的结构体。

4、自定义消息

 

       我需要发送的是ButtonBN_CLICKED消息,是WM_COMMAND中的一种消息。根据MSDN描述,Code应该是这样的:

::PostMessage(m_hWnd, WM_COMMAND, MAKEWPARAM(idBtn1, BN_CLICKED),  (LPARAM)(hwndButton1)); //m_hWnd为父窗口的Handle, 因为是在父窗口的代码中处理消息队列

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值