CListView多重派生于CView
CListCtrl直接派生于CWnd
今想在一个View(派生于CView)中显示一个列表,那我应该在view中使用CListCtrl还是CListView?为什么?

解决方案 »

  1.   

    不同的东西啊CListView是一个视图,属于程序的文档视图结构的
    CListCtrl只是一个控件,只不过在CListView中嵌入了一个CListCtrl
      

  2.   

    可以参考一下CListView的源代码,在mfc目录下可以看到,其实CListView就是一个CListCtrl,只不过多了一个GetListCtrl()接口,但是,如果你看看这个GetListCtrl()的实现,其实是这个样子的_AFXCVIEW_INLINE CListCtrl& CListView::GetListCtrl() const
    {
     return *(CListCtrl*)this; 
    }我觉得,将CListCtrl封装成view的形式还是为了适应mfc的doc/view形式的程序结构,还有,封装成view的形式后,在程序的frame窗口中,可以自动管理view的大小以适应于整个client区,而不用再用代码去调整其窗口位置和大小.
      

  3.   

    看看 AFXCVIEW.INL 文件里的CListView的构造函数,再看看这个ListView是如何Create的,你就可以知道了.
      

  4.   

    CListView多重派生于CView
    CListCtrl直接派生于CWnd
    今想在一个View(派生于CView)中显示一个列表,那我应该在view中使用CListCtrl还是CListView?为什么?
      

  5.   

    我个人认为应该使用CListView ,个人习惯的问题。