定义了一个对话框类CLayerList,这个对话框上有个CListCtrl控件,定义其控制变量为
CListCtrl  m_LayerList;
这个对话框是一个无模式对话框,他的创建是在CMainFrame中的OnCreate函数中创建的,
在CLayerList的初始化中我做了对List标题栏初始化操作
BOOL CLayerList::OnInitDialog() 
{
CDialog::OnInitDialog();

//  TODO: Add extra initialization here
m_LayerList.InsertColumn(0,_T("图层名"),LVCFMT_LEFT,100);
m_LayerList.InsertColumn(1,_T("详细信息"),LVCFMT_LEFT,100);

return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE
}
同时自定义了一个函数来完成对List内容的添加UpdateLayerList(***);
这个初始化没有问题,现在我在另一个类中欲根据我取得的值来添加这个List的内容,
CLayerList m_pLayerList.UpdateLayerList(***);
此时在调用这个UpdateLayerList(***)的时候就出现问题了:
这个函数中的部分语句是这样的:index=m_LayerList.InsertItem(H,FieldName);
我跟踪到这的时候发现这个m_LayerList根本没值,我觉得它的初始化已经在创建对话框的时候完成了吧,怎么现在调用时就不能使用?应该怎么使用?请大家帮帮忙

解决方案 »

  1.   

    你的另一个类需要得到这个无模式对话框的指针,从而操作上面的listctrl。CLayerList m_pLayerList.UpdateLayerList(***);
    你这样只是重新创建了一个CLayerList的实例m_pLayerList,而不是操作你已经打开的那个无模式对话框
      

  2.   

    你在OnInitDialog和UpdateLayerList函数中都加断点,然后看一下程序运行后先进入哪一个。估计你的是先进入的UpdateLayerList
      

  3.   

    theApp 是全局变量
    CMainFrame * pMainFrm = ( CMainFrame * )theApp->GetMainWnd(); //得到主窗口
    // 你的非模态窗口在主窗口中创建,应该是主窗口的变量
    pMainFrm->pDlg; //就是无模式对话框的指针