在使用Mark Jackson 设计的一个排序ListCtrl类的时候出现一个问题。
关于Mark Jackson的CSortListCtrl类资料参见:http://www.codeproject.com/listctrl/sortlistctrl.asp?df=100&forumid=2591&fr=26    在看了他的Demo程序之后,我想在视类中使用这个控件(他的演示
程序是用对话框实现的)。可是总是错误。在视类中使用该控件的时候无法
用函数Create(……)这个控件,不知道什么??
    我的代码大致如下:
class CShowResultView : public CView
{
……
public:
   CSortListCtrl * m_list;
……
}
void CShowResultView::OnInitialUpdate()
{
... 
m_list = new CSortListCtrl;
if (!m_list) return;
CRect rect;
GetClientRect(rect);
m_list->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT,rect, this, 100);
……
}
到Create这句话的时候就出现错误了。我不知道为什么。
我是在一个视类使用这个控件的。
不知道为什么在这样不行?
请教  ,谢谢了。

解决方案 »

  1.   

    我认为这样做是不行的。其原因如下:
      1。一般在用create动态创建控件时,create前面的指针是指向控件基类的,如CButton,CListCtrl,等等,然后在第一个参数中设置有关属性,在第二个参数中设置位置、大小来“自定义“控件。这就是“动态“创建控件吧。这里CSortListCtrl并不是基类,而是已经设置了若干属性甚至添加了一些“自定义”属性的派生类,所以你不能在第一个参数中设置有关属性来“动态创建控件”,原因之二在于这个控件已经有一些属性。
      2。如果你要利用这个控件类,只能用“动态子类化”了。
       假设你的视图类派生于CListView,可用下列代码来进行:
        CListCtrl& m_listCtrl=GetListCtrl();
       m_list.SubclassWindow(m_listCtrl.m_hWnd);个人之见,仅供参考。