我自定义一个继承自CListCtrl的类对listctrl控件进行自绘,玩的不亦乐乎。
但是突然想再加一个listctrl控件,就不知道怎么办了。
主要是继承的类里面一些函数,比如
DrawItem
MeasureItem
OnClick
OnKillFocus
怎么区分是对哪一个listctrl操作的?还是要再继承一个类出来?求教!继承类控件
但是突然想再加一个listctrl控件,就不知道怎么办了。
主要是继承的类里面一些函数,比如
DrawItem
MeasureItem
OnClick
OnKillFocus
怎么区分是对哪一个listctrl操作的?还是要再继承一个类出来?求教!继承类控件
int GetDlgCtrlID(
HWND hwndCtl // handle of control
);
NM_CLICK通知,第一个怎么加的,第二个就怎么加,消息映射加的对吗?ID号有效不?
NM_CLICK通知,第一个怎么加的,第二个就怎么加,消息映射加的对吗?ID号有效不?
第一个是这样:
ON_NOTIFY_REFLECT(NM_CLICK,OnClick)afx_msg void OnClick(NMHDR* pNMHDR, LRESULT* pResult);没用关联ID
是这样不,已经定义为我派生的类的实例了
我两个控件是在两个对话框里面的,CMyListCtrl是我继承的类
第一个对话框类里面:CMyListCtrl m_listctrl;
第二个对话框类:CMyListCtrl m_motion_list;
CMyListCtrl类的定义里:
protected:
//{{AFX_MSG(CMyListCtrl)
afx_msg void OnClick(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnSelchangecombobox();
afx_msg void OnKillFocus();
afx_msg void OnClickMotionList(NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
virtual void MeasureItem(LPMEASUREITEMSTRUCT lp);
DECLARE_MESSAGE_MAP()
.CPP里:
BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
//{{AFX_MSG_MAP(CMyListCtrl)
ON_NOTIFY_REFLECT(NM_CLICK,OnClick)
ON_CBN_SELCHANGE(IDC_COMBOXID,OnSelchangecombobox)
ON_EN_KILLFOCUS(IDC_EDITID,OnKillFocus)
ON_NOTIFY(NM_CLICK, IDC_MOTION_LIST, OnClickMotionList)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
然后就是一些具体的消息函数:
void CMyListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
void CMyListCtrl::OnClick(NMHDR* pNMHDR, LRESULT* pResult)
.
.
.
进入没有?
2. 2个 实例 区分得开不 ?
第二个对话框类:CMyListCtrl m_motion_list;
是你自己 写的?不是 向导 产生的?
有没有create ?
看看你的代码。
问题是后面还需要在别的对话框用到listctrl控件,为了避免需要派生cmylistctrl2、cmylistctrl3...这样,我就在想能不能只用一个派生类就好,也就是打开哪个对话框就对哪个对话框上面的listctrl控件进行自绘、响应NM_CLICK等等对话框是模式对话框,相关代码都贴在上面了
你把 CListCtrl 改成 CMyListCtrl 就行了。不要 改别的。
第二个对话框类:CMyListCtrl m_motion_list;你把 第一个对话框类里面:CMyListCtrl m_listctrl;改
CListCtrl m_listctrl;看看。第二个对话框类:CMyListCtrl m_motion_list;
起不起作用。
CMyListCtrl m_ctrl2;
分别操作两个变量。这样不行吗?