button控件只能响应鼠标单击操作,触发click事件方法,button按钮的点击事件
对话框上的按钮本身只能添加单击双击时间,不能响应鼠标按下与弹起消息,可以通过两种方法实现:
1.重载按钮类,将该类子类化
在工程中添加一个新类CMyButton,基类为按钮。
在对话框对话框中为IDC_BUTTON添加变量,在变量类型里选择CMyButton,变量名自定义,如我的按钮。添加函数伦敦与松开按键函数响应按钮按下与弹起消息
在类别名中选择CMyButton,然后添加WM_LBUTTONUP,WM_LBUTTONDOWN消息映射函数。添加代码如下:
void CMyButton:OnLButtonUp(UINT nFlags,CPoint)
{
//TODO:在此添加您的消息处理程序代码和/或调用系统默认值
((CMyDlg *)get parent())-OnUp(this-GetDlgCtrlID());
CButton:OnLButtonUp(nFlags,point);
}
void CMyButton:OnLButtonDown(UINT nFlags,CPoint)
{
//TODO:在此添加您的消息处理程序代码和/或调用系统默认值
((CMyDlg *)get parent())-on down(this-GetDlgCtrlID());
CButton:OnLButtonDown(nFlags,point);
}
然后对话框中实现函数
void CMyDlg:OnDown( UINT nID)
{
开关(nID)
案例IDC_BUTTON:
打破;
}
void CMyDlg:OnUp( UINT nID)
{
.
}
2.重载对话的预传输消息函数
BOOL CTestDlgDlg:PreTranslateMessage(MSG * pMsg)
{
//TODO:在此添加您的专用代码和/或调用基类
if(pMsg-message==WM _ LBUTTONDOWN)
{
if(WindowFromPoint(pMsg-pt)==GetDlgItem(IDC _ button 1))
{
}
}
else if(pMsg-message==WM _ LBUTTONUP)
{
if(WindowFromPoint(pMsg-pt)==GetDlgItem(IDC _ button 1))
{
//AfxMessageBox( Hello );
}
}
返回CDialog:PreTranslateMessage(pMsg);
}
来自:http://博客。。net/pandy 1110/article/details/5953188
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。