Button按钮响应鼠标按下与弹起消息

对话框上的按钮本身只能添加单击双击时间,不能响应鼠标按下与弹起消息,可以通过两种方法实现:

1.重载CButton类,将该类子类化

    在工程中添加一个新类CMyButton,基类为CButton。

    在对话框MyDlg中为IDC_BUTTON添加变量,在变量类型里选择CMyButton,变量名自定义,如m_myButton。添加函数OnDown与OnUp函数响应按钮按下与弹起消息
    在Class name中选择CMyButton,然后添加WM_LBUTTONUP,WM_LBUTTONDOWN消息映射函数。添加代码如下:
void CMyButton::OnLButtonUp(UINT nFlags, CPoint point)
{
    // TODO: Add your message handler code here and/or call default

    ((CMyDlg*)GetParent())->OnUp(this->GetDlgCtrlID());
    CButton::OnLButtonUp(nFlags, point);
}

void CMyButton::OnLButtonDown(UINT nFlags, CPoint point)
{
    // TODO: Add your message handler code here and/or call default

    ((CMyDlg*)GetParent())->OnDown(this->GetDlgCtrlID());
    CButton::OnLButtonDown(nFlags, point);
}

然后MyDlg中实现函数

void CMyDlg::OnDown( UINT nID )
{

   Switch(nID)

     case IDC_BUTTON:

     break;
}

void CMyDlg::OnUp( UINT nID )
{

   ...
}

2.重载Dialog的PreTranslateMessage函数
BOOL   CTestDlgDlg::PreTranslateMessage(MSG*   pMsg)  
{
   //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class
   if(pMsg-> message   ==   WM_LBUTTONDOWN)
   {
       if(WindowFromPoint(pMsg-> pt)   ==   GetDlgItem(IDC_BUTTON1))
       {
       }
   }
   else   if(pMsg-> message   ==   WM_LBUTTONUP)
   {
       if(WindowFromPoint(pMsg-> pt)   ==   GetDlgItem(IDC_BUTTON1))
      {
        //AfxMessageBox( "Hello ");
       }
    }
   return   CDialog::PreTranslateMessage(pMsg);
}

 

 

from:http://blog.csdn.net/pandy1110/article/details/5953188

时间: 2024-09-24 01:29:34

Button按钮响应鼠标按下与弹起消息的相关文章

mfc对话框添加一个button按钮,为什么点击两次才能响应

问题描述 mfc对话框添加一个button按钮,为什么点击两次才能响应 mfc对话框添加一个button按钮,为什么点击两次才能响应,急急急,拜托解答下 解决方案 你按钮里面怎么写的,有没有什么判断的逻辑,需要第二次点击才能触发. 解决方案二: m_bOpenPort=!m_bOpenPort; //点一次改变一次,和m_bOpenPort初值有关 解决方案三: 是消息处理函数的问题吧?不知道你的响应是指什么. 按钮没放多了?挪开按钮,看看下面还有没有. 解决方案四: 是不是两次点击连接在一起了

点击button按钮调用控制台程序 文件在同一文件夹下

问题描述 我写了一个Winform的窗口里面就一个按钮我想点击这个按钮来调用控制台的EXE程序文件Winform的程序与控制台的程序在同一个目录下非不同目录我是一个新手最好给我代码也就是如果我把2个文件从不同的盘符之间移动一下不用修改WinformButton里面查询代码的!!! 解决方案 解决方案二:点击启动文件里面的Button按钮来调用这个文件夹下的QQtest.exe无论Debug文件夹在什么盘符下都可以调用我Button里面应该怎么写解决方案三:stringpath=string.Fo

如何在可执行程序中使某一Button按钮可在窗体中拖动移位,并可单击执行鼠标右键代码?

问题描述 如何在可执行程序中使某一Button按钮可在窗体中拖动移位,并可单击执行鼠标右键代码?请问如何写这样的程序??? 解决方案 解决方案二:在鼠标拖动事件中改变Button的loaction可以不~~

视频-.net实现鼠标5秒不动隐藏按钮 ,鼠标移动显示按钮。

问题描述 .net实现鼠标5秒不动隐藏按钮 ,鼠标移动显示按钮. .net实现鼠标5秒不动隐藏按钮 ,鼠标移动显示按钮.例如,播放视频全屏时.鼠标静止N秒,进度条播放按钮等都隐藏,鼠标移动后显示显示 解决方案 定义一个成员变量private DateTime lastmove=DateTime.Now;加上如下api定义[DllImport(""user32.dll"" EntryPoint = ""ShowCursor""

asp.net 页面回车触发button按钮事件

asp.net 页面回车触发button按钮事件 深层次来说这不是 ASP.NET 的问题, 而是 html form 的 submit 按钮就是如何设计的. 当你的光标焦点进入某个表单元素的时候,会激活该表单中第一个(流布局顺从左到右,从上至下) type=submit 的按钮(假如有),等待响应回车事件,并提交该form 你可以测试一下代码: <form action=""> <input type="text" /> <input

如何使鼠标按下后2秒,鼠标样式由default变成hand,在执行mousedown里面的程序

问题描述 [privatevoidpanel1_MouseDown(objectsender,MouseEventArgse){//System.Threading.Thread.Sleep(3000);this.panel1.Cursor=System.Windows.Forms.Cursors.Hand;//怎么把这句话变成延时2秒后再执行.if(e.Button==MouseButtons.Left){......}}因为我想判断mouse如果执行速度小于2秒内就执行click事件,如果鼠

JS实现网页游戏中滑块响应鼠标点击移动效果_javascript技巧

本文实例讲述了JS实现网页游戏中滑块响应鼠标点击移动效果.分享给大家供大家参考,具体如下: 这是网页游戏中的一个有趣效果,可以完成以下几个动作:滚动.scroll 8个方向.鼠标坐标获娶对象上下左右位置获取,大家可以自己添加.MoveReady和ScrollReady两个注释掉了 取消注释后防止鼠标连续点击效果叠加. 在线演示地址如下: http://demo.jb51.net/js/2015/js-web-game-click-move-demo/ 具体代码如下: <!DOCTYPE html

Flex4 设置button按钮背景图片(up,down,over等各状态)

Flex4 - 设置button按钮背景图片(up,down,over等各状态) Flex4中,如果要设置spark组件的button按钮背景图,可以通过自定义皮肤来实现.在皮肤中添加BitmapImage组件,分别设置在各个状态下的图片即可(同时背景图可使用9宫格样式,便于拉伸).代码如下:   --- 按钮皮肤 ImageBgButtonSkin.mxml ---   <?xml version="1.0" encoding="utf-8"?> &l

5.Qt自定义Button按钮的实现

 1.编写自定义按钮 MyButton.h #ifndef MYBUTTON_H #define MYBUTTON_H   #include <QWidget>   /**  * @brief The MyButton class  * 如果想重写button,需要继承QWidget  */ class MyButton : public QWidget {     Q_OBJECT public:     explicit MyButton(QWidget *parent = 0);