为什么在另一个类中调用list control 的DeleteAllItems函数,会出现错误.我是用拥有list control 的类的对象在另一个类中调用的.请问应该怎么解决?

解决方案 »

  1.   

    你取得的list control控件的指针正确吗?? 说详细点.. 要不发代码
      

  2.   

    我把ClistCtrl的对象改成静态的就可以了.我定义的list control的控件变量是m_list,这个控件所在的类是比如是CDlg类,
    然后我在另一个类里面也要用到m_list这个变量,比如我在CSDlg这个类里面调用DeleteAllItems函数,我是这样调用的
    CDlg dlg:
    dlg.m_list.DeleteAllItems();
    在编译时就会报错.我把m_list改成静态的就好好了,为什么?
      

  3.   

    ...
    你这样产生的dlg,不是对应的你看见的那个对话框,而是一个新对象
    因为声明为static,所有该类对象共享m_list,所以才没错
      

  4.   

    晕..这样当然会错...你CDlg dlg;等于是新建了一个窗口,而后面的代码则在这个新窗口上进行操作,当然会有问题,你要在原来的CDlg上调用它的方法~~ 只能先取得已有CDlg类的指针~
    具体的做法..创建CDlg的时候保存这个窗口的指针,然后在CSDlg中这样调用:CDlg *dlg = 全局保存的CDlg窗口指针;
    dlg->m_list.DeleteAllItems();而你使用静态变量可以使用那是因为,静态变量在同一类的不同实例中只存在唯一实例,也就是虽有几个CDlg窗口,但只有一个m_list对象实例~
      

  5.   

    可以先得到按钮的DC,再绘图..假如你的按钮的类名为m_PIC:CDC *pDC = m_PIC.GetWindowDC();
    HICON c = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    pDC->DrawIcon(0,0,c); 
    ReleaseDC(pDC);
      

  6.   

    我建了一个树和一个LIST CONTROL怎样单击树中的一个节点能在list control里面显示出该节点对应的数据库表的内容.
      

  7.   

    点击的时候获得树节点的文本值,然后调用list control的某个方法,并把文本值传进去..当然这个方法得自己写,首先根据传进来的字符串判断读取的表名与规则,然后用ADO打开记录集,把记录集中的数据添加到list control中..