通过尝试有两种方案可以解决这个问题,第一种方案是通过PreTranslateMessage函数在调度消息之前对消息类型进行筛选,第二种方案是重载CButton类,在重载后的类CForTestButton中新增ON_WM_LBUTTONDOWN消息以及ON_WM_LBUTTONUP消息。
 
第一种方案
实现原理也挺简单,在消息调度函数PreTranslateMessage函数中拦截Button按钮的句柄,之后在对应大括号内调用相关功能块即可。核心源码如下:
…… ……
BOOL CTestButtonDlg::PreTranslateMessage(MSG* pMsg)
{
  if(pMsg->message == WM_LBUTTONDOWN)
  {
   if(pMsg->hwnd == GetDlgItem(IDC_BTN_FOR_TEST)->m_hWnd)
  {
   MessageBox("Button按钮按下");
  // 在此调用Button按钮按下的操作
   }
  }   if(pMsg->message == WM_LBUTTONUP)
  {
   if(pMsg->hwnd == GetDlgItem(IDC_BTN_FOR_TEST)->m_hWnd)
   {
   MessageBox("Button按钮抬起");
   // 在此调用Button按钮抬起的操作
   }
  }
}
…… ……

  

其中,“IDC_BTN_FOR_TEST”表示待按下的按钮ID。
 
第二种方案
自定义一个类CForTestButton类继承CButton类,在继承类CForTestButton类中新增ON_WM_LBUTTONDOWN()消息和ON_WM_LBUTTONUP()消息。ForTestButton.h头文件中新增的源码如下:
…… ……
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
DECLARE_MESSAGE_MAP()
…… ……

ForTestButton.cpp源文件中新增的源码如下:

…… ……

BEGIN_MESSAGE_MAP(CForTestButton, CButtion)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
END_MESSAGE_MAP() …… ……
…… …… void CForTestButton::OnLButtonDown(UINT nFlags, CPoint point)
{
CRect rcJog;
this->GetClientRect(&rcJog);
if(rcJog.PtInRect(point))
{
MessageBox("Button按钮按下");
}
} void CForTestButton::OnLButtonUp(UINT nFlags, CPoint point)
{
CRect rcJog;
this->GetClientRect(&rcJog);
if(rcJog.PtInRect(point))
{
MessageBox("Button按钮抬起");
}
} …… ……

  

 
 
 
 
 
 
 
 
 
 

如何在MFC界面开发中响应Button按钮的Down和Up事件的更多相关文章

  1. IOS开发中UIBarButtonItem上按钮切换或隐藏实现案例

    IOS开发中UIBarButtonItem上按钮切换或隐藏案例实现案例是本文要介绍的内容,这个代码例子的背景是:导航条右侧有个 edit button,左侧是 back button 和 add bu ...

  2. android中在java代码中设置Button按钮的背景颜色

    android中在java代码中设置Button按钮的背景颜色 1.设置背景图片,图片来源于drawable: flightInfoPanel.setBackgroundDrawable(getRes ...

  3. Android处理ListView中的Item中的Button按钮不能点击的问题

    问题描述:ListView列表中的Button按钮按钮不能点击 解决办法:在ListView中的Item项的布局文件中加上:android:descendantFocusability="b ...

  4. 在datagridview中添加button按钮

    .Net的DataGridView控件中,提供了一种列的类型,叫 DataGridViewButtonColumn ,这种列类型是展示为一个 按钮,可以给button赋予相应的text,并且,此but ...

  5. Unity中Button按钮的触发监听事件

    第一种方式:需要把自己添加的Button按钮属性(Inspector)中的(Button)onclick添加方法. public void BtnCreteClick() { Debug.Log(&q ...

  6. form中的button按钮在IE11中自动提交表单问题导致弹出框关闭之后表单被重置

    最近几天,测试系统,遇到一个兼容性问题,form中有一个button按钮,没有指定type类型,点击按钮弹出框选择值之后回填给form上的一个单行文本框,在IE6.IE7.IE8.IE9.IE10中测 ...

  7. 基于VC的MFC界面开发

    教你熟悉VC6.0创建一个可视化软件的过程 UpdateData(TRUE);//将输入数据赋给文本框变量. UpdateData(FALSE);//将内容显示在文本框中 AfxMessageBox( ...

  8. 【MFC】如何在mfc窗口程序中调用控制台

    1.工程名为Zero,在CZeroDlg.cpp中加入头文件 #include “conio.h” : 2.在CZeroDlg::OnInitDialog() {…}函数中加入AllocConsole ...

  9. OpenStack 界面开发中response.body的中文编码问题

    Contents [hide] 1 问题的引入= 1.1 解决办法 2 用户限制输入中文 3 不限制用户输入,呈现上修改 问题的引入= G在我们创建虚拟机的时候,会设置虚拟机的名称,描述,如果没有限制 ...

随机推荐

  1. JSON Web Token实际应用

    一.JWT认证方式的实现方式 1.客户端不需要持有密钥,由服务端通过密钥生成Token. 2.客户端登录时通过账号和密码到服务端进行认证,认证通过后,服务端通过持有的密钥生成Token,Token中一 ...

  2. [Hadoop大数据]——Hive部署入门教程

    Hive是为了解决hadoop中mapreduce编写困难,提供给熟悉sql的人使用的.只要你对SQL有一定的了解,就能通过Hive写出mapreduce的程序,而不需要去学习hadoop中的api. ...

  3. Android-webview和js互相调用

    Android-webview和js互相调用 Android 和 H5 都是移动开发应用的非常广泛.市面上很多App都是使用Android开发的,但使用Android来开发一些比较复杂附属类,提示性的 ...

  4. TSQL “匹配全部”语义的实现

    在TSQL中,有exists子句表示存在,表示匹配任意一行数据,但是,如何表示匹配全部的数据行.例如,表示一个学生选修了所有课程,这就是“匹配全部”语义的一个经典实例. 示例,获取“选修全部”课程的学 ...

  5. CSS list-style属性控制ul标签样式

    试一试 <style type="text/css" media="all"> ul { list-style-type: disc; } ul#c ...

  6. 深入理解脚本化CSS系列第五篇——动态样式

    前面的话 很多时候,DOM操作比较简单明了,因此用javascript生成那些通常原本是HTML代码生成的内容并不麻烦.但由于浏览器充斥着隐藏的陷阱和不兼容问题,处理DOM中的某些部分时要复杂一些,比 ...

  7. jsp通过易宝方式实现在线支付

    项目下载地址: https://github.com/hjzgg/OnlinePayment 参考:http://blog.csdn.net/jadyer/article/details/738025 ...

  8. 最好的简明NodeJS学习材料

    http://www.nodebeginner.org/index-zh-cn.html http://debuggable.com/posts/understanding-node-js:4bd98 ...

  9. 配置putty自动登陆服务器

    putty是一款知名的SSH工具,可以用来登陆linux服务器,提供了终端.SSH是secure Shell的缩写.我之前也有一篇文章介绍这个话题:http://www.cnblogs.com/che ...

  10. T-Sql(二)事务(Transaction)

    今天讲下T-Sql语法中事务的用法,事务在项目中一般用的很少,主要用于转账,或是一些多表操作,第一步完成不了滚回,不执行接下的步骤.要么都不完成要么都完成,这是事务的特征. 语法很简单,示例代码如下: ...