点击按钮的时候怎么触发对话框的OnLButtonDown? Dialog中有个OnLButtonDown的处理函数希望能截获所有的对话框上的左键点击,但是发现如果点一个按钮的话,不会执行Dialog::OnLButtonDown应该怎么处理一下呢?//bow 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在button的派生类中处理WM_LBUTTONDOWN 在PreTranslateMessage里处理,然后返回TRUE 或向对话框发送SendMessage(hDlg,WM_LBUTTONDOWN,....); PreTranslateMessage是王道判断pMsg->message == WM_LBUTTONDOWN或者向父窗口发送WM_LBUTTONDOWN消息 这样怎么不行呢class CNewButton:public CButton{public: CNewButton(){ }; ~CNewButton(){}; virtual BOOL PreTranslateMessage(MSG* pMsg);};BOOL CNewButton::PreTranslateMessage(MSG* pMsg){ if(pMsg->message==WM_LBUTTONDOWN||pMsg->message==WM_LBUTTONUP) return TRUE; else return FALSE;}在CTestDlg中,有: CNewButton m_Action;void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point) { TRACE("Dlg:Down\n"); CDialog::OnLButtonDown(nFlags, point);}发现还是在按钮外面按的时候有反映,里面没有 BOOL CNewButton::PreTranslateMessage(MSG* pMsg){ if(pMsg->message==WM_LBUTTONDOWN||pMsg->message==WM_LBUTTONUP) { ::SendMessage(m_pDlg->GetSafeHwnd(),pMsg->message,pMsg->wParam,pMsg->lParam); return FALSE; } else return FALSE;}改成这样可以了。传进来一个Dialog指针。总觉得比较土 在 view类里OnMouseMove函数里面贴图怎么显示不出来 怎么把一个MFC程序做成windows服务程序 Edit控件上的内容删除掉用什么函数? 关于《深入浅出MFC》中的frame1中的问题,this指针。 Hack HackShield dbgrid控件问题,帮忙 vs2003和2005里的vc能不能开发非托管的程序? 关于组件技术的低级问题 求解答:怎样调整弹出的非模态对话框位置、大小 这个问题不知道发到什么地方才好,所以发到这里了。 用odbc操作excel的问题 请教通过ODBC读写Excel 2000文档的问题
判断pMsg->message == WM_LBUTTONDOWN或者向父窗口发送WM_LBUTTONDOWN消息
{
public:
CNewButton(){ };
~CNewButton(){};
virtual BOOL PreTranslateMessage(MSG* pMsg);
};
BOOL CNewButton::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_LBUTTONDOWN||pMsg->message==WM_LBUTTONUP)
return TRUE;
else
return FALSE;
}在CTestDlg中,有: CNewButton m_Action;
void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
TRACE("Dlg:Down\n");
CDialog::OnLButtonDown(nFlags, point);
}
发现还是在按钮外面按的时候有反映,里面没有
{
if(pMsg->message==WM_LBUTTONDOWN||pMsg->message==WM_LBUTTONUP)
{
::SendMessage(m_pDlg->GetSafeHwnd(),pMsg->message,pMsg->wParam,pMsg->lParam);
return FALSE;
}
else
return FALSE;
}
改成这样可以了。传进来一个Dialog指针。总觉得比较土