为了屏蔽掉鼠标的一些消息,我需要将一个ListCtrl控件子类化。但是为了自绘这个控件,我自写了一个派生于CListCtrl的类,并让为控件关联一个这个派生类的对象。
问题:1、如果控件关联的是CListCtrl类对象,实现起来就没问题,但关联的是CListCtrl的派生类的对象时执行起来就奔溃了,请问要怎么实现?
2、除了子类化可以屏蔽掉消息外,还有其它什么办法吗?
问题:1、如果控件关联的是CListCtrl类对象,实现起来就没问题,但关联的是CListCtrl的派生类的对象时执行起来就奔溃了,请问要怎么实现?
2、除了子类化可以屏蔽掉消息外,还有其它什么办法吗?
2.有的时候消息还会到达容器形成OnNotify
就是这样的,我从外部导入了一个类,该类是从CListCtrl派生来的,我把它导入到我的程序后发现它没有可以添加的消息,例如WM_LBUTTONDOWN等都没有,连那个可以添加消息的选项没了。正常情况下,从MFC派生来的类都是可以响应消息的。请问是怎么回事啊?我想程序出错的地方就是这个类根本没有消息可以屏蔽。
不能去PretranslateMessage里面去屏蔽么?
话说你有没BEGIN_MESSAGE_MAP和END_MESSAGE_MAP?
最好贴点有用的代码上来
class QListCtrl : public CListCtrl
{
};
QListCtrl m_qctrl;
在DDX中关联m_qctrl和ID,你试试,这样就是子类化。很显然可以,否则岂不是违背了C++标准。
我用的就是m_header.SubclassWindow(m_qctrl.GetHeaderCtrl()->m_hWnd).
其中m_header是从CHeaderCtrl派生出来的对象.目的是用来截获鼠标的点击消息的.
但是一执行就出错了.