请问一下大家 ,我有一个 CListCtrl 控件问题;  我新建了一个 子类 继承与 CListCtrl  类;
 
, 我现在 用资源编辑器,添加了一个CListCtrl 资源,然后关联了一个变量 m_ListData
, 我现在 把变量的类型改为 我的 子类化的类型, CListData 类型。   
  LONG lStyle;
lStyle=GetWindowLong(m_ListData.m_hWnd, GWL_STYLE);
lStyle &= ~LVS_TYPEMASK; //清除显示方式位lStyle |= LVS_REPORT; //设置报表风格
SetWindowLong(m_ListData.m_hWnd,GWL_STYLE,lStyle);  dwStyle=m_LiatData.GetExtendedStyle();  dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
dwStyle |= LVS_EX_ONECLICKACTIVATE;// 单击激活
dwStyle |= LVS_EX_FLATSB;m_ListData.SetExtendedStyle(dwStyle);
m_ListData.InsertColumn(0,_T("Offset BYTE"),LVCFMT_LEFT,80,40);
m_ListData.InsertColumn(1,_T("Length"),LVCFMT_LEFT,50,40);
m_ListData.InsertColumn(2,_T("Contain"),LVCFMT_LEFT,120,40);for(int i=0;i<40;i++)
{
int nRow=m_LiatData.InsertItem(i,_T("1"));
m_ListData.SetItemText(nRow,1,_T("i"));
m_ListData.SetItemText(nRow,2,_T("o"));
}
 同样用上面的代码,还是不能显示 网格线,数据内容 啊??
哪位能帮我 写一段 子类化的 代码, 或者给个意见,怎么解决这样的问题?先谢过 大家

解决方案 »

  1.   

    如果你上面的代码在CListCtrl类中不能够实现网格的话,那说明是你的实现方法有问题。
    如果能,那说明是的添加子类的时候方法不对。其方法为:首先在类向导中建立一个类其基类为CListCtrl,在给其关联一个成员变量,这是系统会生产其头文件和.cpp文件。这是我们还应该在对话框类CxxDlg类中加入新生产的头文件,就可以执行了。
      

  2.   


    头文件 当然加了 ,我感觉 你1楼说的 创建方法有问题, 我是这样创建的:Step 1 :   新建一个MFC类, CListData  : public  CListCtrl (公有继承 于 CListCtrl);step 2 :    在我的 对话框 C**Dlg 类中 添加了一个 CListCtrl控件资源 IDC_LIST1, 设置了Report 属性;Step 3 :    在 C**Dlg.h 头文件中 添加了 我子类化的 类头文件 ,ListData.h , Step 4 :    在 C**Dlg 类中 ,给 控件资源 IDC_LIST1  添加变量,控件类型,类类型 为 CListData ;Step 5 :  在 C**Dlg 类的 OnInitdialog()  初始化函数中 添加了我 1 楼上面的代码; 就是 不显示内容 和网格线, 但是 在 CListData类中 添加  NM_CLICK  事件 ,在资源控件上是可以响应 点击消息的。。???
      

  3.   

    DDX_Control 关联控件添加了没?
      

  4.   

    有开源的 MFC Grid control
      

  5.   


    添加了,在给 CListCtrl 资源控件 添加变量时,自动就添加了。
      

  6.   

    我试了一下,是可以的,VC2008
    MyList.hclass CMyList:public CListCtrl
    {};实现文件:CMyList m_List;
      

  7.   


    你能把你的 源文件 发一份给我吗?  我用 的VS2005  ,不行. QQ :525136827
      

  8.   


    你好,我收到 你的 源文件了,你的的确可以,但是我发现 了我们建立子类化的源文件是,有很大的差异,我是用 类向导 建立新类,MFC类,自动生成的 **.cpp,**.h  文件, 而你的源文件 是自己手动添加的吧,但是问题又来了,你的那个文件 类上面点击右键,弹出的菜单 不可以添加“Add Window Message Handle”,和 “Add Virtual Function ” 。 子类化的目的 就是为了添加 各种消息,来出来一些事件;实现 父类没有的功能。。你试试用 类向导 , 再建立 一个 继承与 CListCtrl 子类,试试看。。