通过CListView的GetListCtrl()函数可以获得CListCtrl对象,我现在有一个自定义类CMyListCtrl(继承了CListCtrl),但是不知道应该如何对应上CListView中的那个CListCtrl对象,我应该怎么做?谢谢!

解决方案 »

  1.   

    1.
    在视图里定义CMyListCtrl最成员对象,在OnInitUpdate函数里   
    CRect   rect;   
    GetClientRect(&rect);   
    MoveWindow()函数把你自己的控件占满整个客户区就可以了。
      

  2.   

    本帖最后由 laiyiling 于 2008-04-20 15:38:47 编辑
      

  3.   

    变通一下:自己定义一个视图类,类中定义一个自己的ListCtrl类对象。响应视图类的WM_CREATE消息,在调用完基类的OnCreate函数之后,执行ListCtrl类对象的Create函数。再响应视图类的WM_SIZE消息,用GetClientRect取视图客户区矩形,ClientToScreen转成屏幕坐标,再调ListCtrl类对象的MoveWindow。
      

  4.   

    直接使用子类化即可,在view类里添加一个ListCtrl继承类的实例成员(比如CMyListCtrl m_myListCtrl),在OnCreate或者OnInitUpdate里面调用:
    m_myListCtrl.SubclassWindow(GetListCtrl());
      

  5.   


    在使用CMyListCtrl的那个窗口 声明一个 CMyListCtrl m_Ctrl;void CMyDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CMyDlg)
    DDX_Control(pDX, IDC_MY_LIST_VIEW, m_Ctrl);
    //}}AFX_DATA_MAP
    }
    这样,这个窗口的CListView就和你的类绑定了吧。也可以试试重载一个CListView,然后在这个CListView重载上面的函数,一样有效。这个时候,你就有一个通过你的CMyListCtrl来控制的CListView了。