Здравствуйте, azesh, Вы писали:
A>мне у CListView нужно заменить CListCtrl на свой...
A>подскажите как это сделать?
Я делал так:
//MyListView.h
class CMyListCtrl : public CListCtrl
{
//....
}
class CMyListView : public CListView
{
//...
public:
CMyListCtrl & GetListCtrl(){return m_ctrlList;}
protected:
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
virtual BOOL PreTranslateMessage(MSG* pMsg);
virtual BOOL OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pLResult);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
protected:
CMyListCtrl m_ctrlList;
}
//MyListView.cpp
LRESULT CMyListView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT lResult = 0;
if (!OnWndMsg(message, wParam, lParam, &lResult))
if( !m_ctrlList.OnWndMsg(message, wParam, lParam, &lResult))
lResult = DefWindowProc(message, wParam, lParam);
return lResult;
}
BOOL CMyListView::PreTranslateMessage(MSG* pMsg)
{
if( ! CListView::PreTranslateMessage(pMsg) )
return m_ctrlList.PreTranslateMessage(pMsg);
return CListView::PreTranslateMessage(pMsg);
}
int CMyListView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CListView::OnCreate(lpCreateStruct) == -1)
return -1;
m_ctrlList.m_hWnd = m_hWnd;
m_ctrlList.m_pfnSuper = m_pfnSuper;
m_ctrlList.PreSubclassWindow();
return 0;
}
BOOL CMyListView::OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pLResult)
{
if( !CListView::OnChildNotify(message, wParam, lParam, pLResult) )
return m_ctrlList.OnChildNotify(message, wParam, lParam, pLResult) ;
return FALSE;
}
void CMyListView::OnDestroy()
{
m_ctrlList.OnDestroy();
m_ctrlList.m_hWnd = NULL;
m_ctrlList.m_pfnSuper = NULL;
CListView::OnDestroy();
}