MFC的按钮控件Button本身具有单击、双击等消息响应事件,但单独的 “按下”和 “弹起”需要我们自定义,以下为按钮自定义事件示例。
1- 在项目目录里右键添加类;
2- 添加C++ Class;
3- 添加基于CButton的类,命名为CPTZButton,名字按自己需要随便取就好;
4- 在PTZButton.h里添加代码如下:
#if !defined(PTZ_BUTTON_CONTROL_H_) //防止重复包含
#define PTZ_BUTTON_CONTROL_H_
#if _MSC_VER > 1000 //微软C编译器版本控制大于1000,例如vc6.0为1200
#pragma once
#endif // _MSC_VER > 1000
class CPTZButton : public CButton
{
// 构造函数
public:
CPTZButton();
virtual ~CPTZButton();
protected:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//按下和弹起事件
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
DECLARE_MESSAGE_MAP()
};
#endif
5- 在PTZButton.cpp里添加代码如下:
#include "stdafx.h"
#include "PTZButton.h"//添加必要的头文件 第三方插件头文件
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CPTZButton::CPTZButton()
{
}
CPTZButton::~CPTZButton()
{
}
BEGIN_MESSAGE_MAP(CPTZButton, CButton)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
END_MESSAGE_MAP()
/*************************************************
函数名: OnLButtonDown
函数描述: 鼠标左键按下响应函数
输入参数:
输出参数:
返回值:
*************************************************/
void CPTZButton::OnLButtonDown(UINT nFlags, CPoint point)
{
//添加你的代码
CButton::OnLButtonDown(nFlags, point);
}
/*************************************************
函数名: OnLButtonUp
函数描述: 鼠标左键弹起响应函数
输入参数:
输出参数:
返回值:
*************************************************/
void CPTZButton::OnLButtonUp(UINT nFlags, CPoint point)
{
//添加你的代码
CButton::OnLButtonUp(nFlags, point);
}
6- 下面使添加的按钮与之关联;
在对话框中添加Button控件 —> 在该控件上右键添加变量—> 在对话框头文件按
钮变量定义处修改CButton为CPTZButton—>完工;
CPTZButton m_ptzupMC;//添加变量后为CButton m_ptzupMC,修改为CPTZButton m_ptzupMC
7- 其他需要添加按下弹起事件的按钮重复第6步逐一添加;