MFC 左、右键点击按钮的实现
展开全部
按钮控件的左键单击消息是默认的,直接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即可。
另外,如果不熟悉,就直接用第二种的代码吧,派生要处理的东西比较多。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询