MFC 左、右键点击按钮的实现
1个回答
展开全部
按钮控件的左键单击消息是默认的,直接ClassWizard添加即可。
右键消息按钮控件默认是不支持的,需要自己处理。
两种办法:
派生一个自己的按钮类,并绑定指定控件。在自定义按钮类中处理WM_RBUTTONDOWN消息。
在对话框所在类CXXXDlg里面重载 PreTranslateMessage,并在其中这样处理消息:
BOOL CXXXDlg::PreTranslateMessage(MSG *pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if(pMsg->message==WM_RBUTTONDOWN) //可以改为任何消息
{
CRect r;
::GetWindowRect(GetDlgItem(IDC_00)->GetSafeHwnd(),&r); //得到button所在的rect
POINT pt;
::GetCursorPos(&pt); //得到鼠标动作的位置
if (PtInRect(&r,pt)) //判断鼠标动作是否在button范围之内
{
AfxMessageBox(_T("右键单击"));
}
}
return CDialog::PreTranslateMessage(pMsg);
}
追问
请问按钮类如何派生?
追答
新建一个窗口类,将基类改为CButton即可。
另外,如果不熟悉,就直接用第二种的代码吧,派生要处理的东西比较多。
微测检测5.10
2023-05-10 广告
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询