[MFC]MFC的BUTTON控件响应鼠标按下和抬起

有效方法:

BOOL CButtontestDlg::PreTranslateMessage(MSG* pMsg)
{
 // TODO: Add your specialized code here and/or call the base class
 if (pMsg->message==WM_LBUTTONDOWN)
 {
  if (pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->m_hWnd)
  {
   SetDlgItemText(IDC_STATIC_SHOW1,"BUN1 DOWN");
  } 
 }

 if (pMsg->message==WM_LBUTTONUP)
 {
  if (pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->m_hWnd)
  {
   SetDlgItemText(IDC_STATIC_SHOW1,"BUN1 UP");
  } 
 }
 return CDialog::PreTranslateMessage(pMsg);
}

 

补充:设置BUTTON控件按下 抬起效果

(CButton*)GetDlgItem(IDC_BUTTON_UP) ->SetState(TRUE)

(CButton*)GetDlgItem(IDC_BUTTON_UP) ->SetState(FALSE)

 

还有以下办法,但是尝试后无法实现,目前还不知道原因

===================================================

获得按钮区域: 
CButton m_Button1; 
CRect rc; 
m_Button1.GetWindowRect(rc); 

响应: 
void CYourDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{ 
// TODO: Add your message handler code here and/or call default 
//判断鼠标在哪个按钮区域中 
if(PtInRect(rc, point)) 
{ 

} 
CDialog::OnLButtonDown(nFlags, point);

 

===================================================

需要重载CButton类并且将该类子类化才可以响应消息WM_DOWN与WM_UP消息. 

=================================================================

继承CButton,添加OnLButtonDown   hold   =   true;   OnLButtonUp   holdstate   =   false; 
OnMouseMove   中检测鼠标位置,如果移出按钮,holdstate=false; 

评论 3 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

hicoder

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值