如何给CButton按钮添加鼠标按下和抬起的响应事件啊? 不太想用CCommandButton因为会在显示上和我的程序出一些冲突!而且也不需要把么多功能!只要有鼠标按下和抬起的响应事件就行了!谢谢帮忙啊! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己从CButton派生一个子类,在其中映射消息. // h文件class CMsgButton : public CButton{ DECLARE_DYNAMIC(CMsgButton)public: CMsgButton(); virtual ~CMsgButton();protected: DECLARE_MESSAGE_MAP()public: afx_msg void OnBnClicked();};// cpp文件// CMsgButtonIMPLEMENT_DYNAMIC(CMsgButton, CButton)CMsgButton::CMsgButton(){}CMsgButton::~CMsgButton(){}BEGIN_MESSAGE_MAP(CMsgButton, CButton) ON_CONTROL_REFLECT(BN_CLICKED, &CMsgButton::OnBnClicked)END_MESSAGE_MAP()// CMsgButton 消息处理程序void CMsgButton::OnBnClicked(){ // TODO: 在此添加控件通知处理程序代码}-----------------------------------------------MyCSDN 免费版 - http://community.csdn.net/Expert/TopicView1.asp?id=4608614 从CButton派生CMyButton类,然后在ClassWizard中选择消息“WM_LBUTTONDOWN”和“WM_LBUTTONUP”,自己重写一下这两个函数不就可以了吗。。 派生一个子类,继承 CButton ,然后用VC的ClassWizard把你需要的消息实现出来就行了,非常简单 1、子类化按钮,当按钮按下和弹出时响应2、在对话框中重载PreTranslateMessage,处理如下:BOOL 类名::PreTranslateMessage(MSG* pMsg) { switch (pMsg->message) { case WM_LBUTTONDOWN: if(pMsg->hwnd == GetDlgItem(IDC_BTN_UP)->m_hWnd) { // 是(IDC_BTN_UP)按下 } case WM_LBUTTONUP: if(pMsg->hwnd == GetDlgItem(IDC_BTN_UP)->m_hWnd) { // 是(IDC_BTN_UP)松开 } } return CDialog::PreTranslateMessage(pMsg);} 调整分割窗体的大小 我有一个VC的插件Visual AssistX 10.1.1031 是注册版的.但不知道怎么注册? 基于对话框的建数据库的问题 为什么我在CPtrList链表进行AddTail()操作,总是出现Assert宏错误?在线等待!!! 急救!谁知道有关轮廓跟踪的算法! 【求助】项目属性中字符集的设置 请问,VC中如何调用oracle中的存储过程 大家来看看这段程序 请问EGE,iamafraid等等高:automation 的一个小问题 有关析构函数的调用顺序的新疑问!!!!!!help 关闭程序的时候是什么消息? 怎样为指针的指针申请动态内存?
class CMsgButton : public CButton
{
DECLARE_DYNAMIC(CMsgButton)public:
CMsgButton();
virtual ~CMsgButton();protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClicked();
};// cpp文件
// CMsgButtonIMPLEMENT_DYNAMIC(CMsgButton, CButton)CMsgButton::CMsgButton()
{}CMsgButton::~CMsgButton()
{
}
BEGIN_MESSAGE_MAP(CMsgButton, CButton)
ON_CONTROL_REFLECT(BN_CLICKED, &CMsgButton::OnBnClicked)
END_MESSAGE_MAP()// CMsgButton 消息处理程序void CMsgButton::OnBnClicked()
{
// TODO: 在此添加控件通知处理程序代码
}-----------------------------------------------
MyCSDN 免费版 - http://community.csdn.net/Expert/TopicView1.asp?id=4608614
2、在对话框中重载PreTranslateMessage,处理如下:
BOOL 类名::PreTranslateMessage(MSG* pMsg)
{
switch (pMsg->message)
{
case WM_LBUTTONDOWN:
if(pMsg->hwnd == GetDlgItem(IDC_BTN_UP)->m_hWnd)
{
// 是(IDC_BTN_UP)按下
}
case WM_LBUTTONUP:
if(pMsg->hwnd == GetDlgItem(IDC_BTN_UP)->m_hWnd)
{
// 是(IDC_BTN_UP)松开
}
}
return CDialog::PreTranslateMessage(pMsg);
}