Re: CListView и его CListCtrl
От: Михаил А. Русаков https://www.wincatalog.com
Дата: 22.03.04 13:36
Оценка:
Здравствуйте, 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();
}
WinCatalog — Disk Catalog Software for Windows
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.