基类怎么响应继承类消息,来帮忙
基类如何响应继承类消息,高手进来帮忙
首先从CDialog派生一个类CBaseDlg,
然后再从CBaseDlg派生一个类CMyDlg,
创建一个实例CMyDlg m_MyDlg;
在m_MyDlg发送了一个消息如WM_NCLBUTTONDOWN,
现在我想让基类CBaseDlg也能接收到这个消息,执行消息响应函数CBaseDlg::OnNcLButtonDown,我在CBaseDlg中添加了WM_NCLBUTTONDOWN的消息响应函数CBaseDlg::OnNcLButtonDown,但是当m_MyDlg发送消息WM_NCLBUTTONDOWN时,基类不执行CBaseDlg::OnNcLButtonDown函数,该如何做才能让基类执行OnNcLButtonDown呢?另外,有种方法好像是在m_MyDlg中执行CBaseDlg::OnNcLButtonDown,也可以达到执行CBaseDlg::OnNcLButtonDown基类函数的目的,但是有点麻烦,请问有没有更好的办法。
------解决方案--------------------
调用CBaseDlg::OnNcLButtonDown有什么不好?MFC自动添加的代码也是这么做的。
首先从CDialog派生一个类CBaseDlg,
然后再从CBaseDlg派生一个类CMyDlg,
创建一个实例CMyDlg m_MyDlg;
在m_MyDlg发送了一个消息如WM_NCLBUTTONDOWN,
现在我想让基类CBaseDlg也能接收到这个消息,执行消息响应函数CBaseDlg::OnNcLButtonDown,我在CBaseDlg中添加了WM_NCLBUTTONDOWN的消息响应函数CBaseDlg::OnNcLButtonDown,但是当m_MyDlg发送消息WM_NCLBUTTONDOWN时,基类不执行CBaseDlg::OnNcLButtonDown函数,该如何做才能让基类执行OnNcLButtonDown呢?另外,有种方法好像是在m_MyDlg中执行CBaseDlg::OnNcLButtonDown,也可以达到执行CBaseDlg::OnNcLButtonDown基类函数的目的,但是有点麻烦,请问有没有更好的办法。
------解决方案--------------------
调用CBaseDlg::OnNcLButtonDown有什么不好?MFC自动添加的代码也是这么做的。
- C/C++ code
void CMyDlg::OnNcLButtonDown(UINT nHitTest, CPoint point) { // TODO: Add your message handler code here and/or call default CBaseDlg::OnNcLButtonDown(nHitTest, point); }
------解决方案--------------------
1.在子类中调CBaseDlg::OnNcLButtonDown
2.不让子类响应WM_NCLBUTTONDOWN消息.