刚在坛子里搜了一遍,没找到类似问题。
我以前在一个基于对话框的工程中用过List Control这个控件,那时把它放到主对话框中,然后在OnInitDialog()方法中把它创建出来。代码如下(pList为CListCtrl类型的指针):
         pList=(CListCtrl* )GetDlgItem(IDC_BOOKMARK_LIST);
DWORD dwListStyle = pList->GetExtendedStyle();
dwListStyle |= LVS_EX_FULLROWSELECT;
pList->SetExtendedStyle(dwListStyle);
pList->InsertColumn(0, "名称", LVCFMT_CENTER|LVCFMT_LEFT, 36);
pList->InsertColumn(1, "编码", LVCFMT_CENTER|LVCFMT_LEFT, 87);
pList->InsertColumn(2, "主页", LVCFMT_CENTER|LVCFMT_LEFT, 200); pList->SetBkColor(RGB(250,250,250));
pList->SetTextColor(0x000000);
pList->SetTextBkColor(RGB(250,250,250));现在我又新建了一个新的单文档工程,在子对话框中放置了List Control控件,在子对话框的Create方法中用同样的方法创建时,发现控件并没有显示出来。而在构造函数中创建时却出现ASSERT错误,调试发现是WINOCC.P中的ASSERT(::IsWindow(m_hWnd))错误。请问,正确的创建方法是什么?

解决方案 »

  1.   

    1。单文档的view 改为基于formview。2。在view.h声明 listctrl指针, 如CListCtrl* pList;   在view 的 OnInitUpdate() 创建 
       pList = new CListCtrl;
    pList->Create(
    WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_ALIGNTOP| LVS_EDITLABELS| LVS_AUTOARRANGE| LVS_SHOWSELALWAYS  ,
    CRect(10,10,400,200), this, 1001);.....在view的onsize, 
    if(pList) pList->MoveWindow(0,0,cx,cy);view的构造函数  pList=0;view 的 DESTROY 函数  delete pList;
      

  2.   

    以上是2种方法。第2种不要改view。我说得很详细了,给分吧。。哈
    用第2种方法处理list的事件,如单击事件应该象这样#define ID_LIST 1001 跟创建list指定的id一样。。上面是1001
    ON_NOTIFY(NM_CLICK, ID_LIST, OnClickList1)
      

  3.   

    ASSERT(::IsWindow(m_hWnd))虽然是因为对话框尚未创建?
      

  4.   

    我按striking的第一种方法做,出现了同样的问题,是ASSERT错误。再试试第二种方法!
      

  5.   

    单文档用CFormView,或者直接用CListView。
      

  6.   

    各位大虾说的方法是不是在主对话框或CFormView中创建list control啊?可是我想在子对话框中创建list control,应该怎么做啊?
      

  7.   

    在资源中添加的List control就不用再去创建!
      

  8.   

    to mynamelj:无论哪种方法,只要能在子对话框中添加list control就行。有什么建议给我吗?
      

  9.   

    ..........到对话框编辑器,从控件栏里面拖一个list control过去????
      

  10.   

    to cppseekey:我就是到对话框编辑器,从控件栏里面拖一个list control过去,但总要做一些初始化工作,比如设置栏标题,显示风格之类的。问题是我连[pList=(CListCtrl* )GetDlgItem(IDC_BOOKMARK_LIST); ]这一关都过不去。
      

  11.   

    pList=(CListCtrl* )GetDlgItem(IDC_BOOKMARK_LIST); 这句你写在哪里的?
      

  12.   

    从控件栏里面拖一个list control过去,然后按Ctrl+W 给IDC_BOOKMARK_LIST 关联一个control变量m_list....
      

  13.   

    试了一下seu07201213的办法,结果在子对话框的Create或构造函数里都不能正常显示,均出现ASSERT错误。天哪,我是多么的着急啊,已经在线等候了四个小时了。
      

  14.   

    ....在子对话框的OnInitDialog里处理啊...
    窗口都还没创建你去使用窗口消息肯定出错嘛
      

  15.   

    to jasonshark:大虾所言极是,可是我从下午就一直在想,为什么我的派生自CDialog的子对话框不能映射OnInitDialog消息,怪呀!
      

  16.   

    厄~ 竟有这等问题?
    你再仔细找找?那个WM_INITDIALOG?
      

  17.   

    感谢jasonshark的提醒。现在问题已经解决了。是在子对话框中添加了消息映射WM_INITDIALOG,然后在消息处理函数OnInitDialog里设置的显示属性。非常感谢jasonshark的关注。
    因为有言在先,要给striking送50分,他可不是我的马甲啊。
      

  18.   

    本想再加分的,但是系统限制我最多只能给一百分,只好做罢。再次感谢jasonshark的提醒。
    结贴时系统反馈:贴子回复次数大于跟给分次数 。这是怎么回事?
      

  19.   

    “call老大”是跟网管联系的意思吧?三年没上CSDN的社区了,连行话都听不懂了。
    明天结贴!睡觉先,祝jasonshark好梦。