求救高手:本人在对话框里加里一个list control控件,
头文件里:CListCtrl m_list;CDlgSUPPLIERS::CDlgSUPPLIERS(CWnd* pParent)
: CDialog(CDlgSUPPLIERS::IDD, pParent)
{
m_list.InsertColumn(0,"ID", LVCFMT_LEFT, 40,0 );//插入列
}
void CDlgSUPPLIERS::DoDataExchange(CDataExchange *pDX)
{ DDX_Control(pDX, IDC_LIST1, m_list);
}
编译没有错,但一运行到m_list.InsertColumn(0,"ID", LVCFMT_LEFT, 40,0 );//插入列
就出现下图的错误,搞了半天,都不知哪里错了???

解决方案 »

  1.   

    m_list.InsertColumn(0,"ID", LVCFMT_LEFT, 40,0 );//插入列
    放在OnInitialDlg中,在构造中还没有形成窗口呢
      

  2.   

     m_list在构造函数时窗口还未创建,放到OnInitialDlg中。
      

  3.   

    BOOL CDlgSUPPLIERS::OnInitDialog(void)
    {
    //初始化Tab Ctrl
    /* m_list.InsertItem(0,_T"Tab Page1");
    m_list.InsertItem(1,_T"Tab Page2");
    m_list.InsertItem(2,_T"Tab Page3");
    */
    OnListControl();
    return TRUE;
    }void CDlgSUPPLIERS::OnA(void)
    {
    // TODO: 在此添加命令处理程序代码
    }void CDlgSUPPLIERS::OnListControl(void)
    {
     m_list.InsertColumn(0,"ID", LVCFMT_LEFT, 40,0 );//插入列
    }
    结果也是一样
      

  4.   

    刚刚我也测试了一下,在有模式状态下,子对话框好像一运行到list control就报错
      

  5.   

    m_list.InsertColumn(0,"ID", LVCFMT_LEFT, 40,0 );//插入列
    这句不能放在构造函数中,放到OnInitDialog初始化中
      

  6.   


    BOOL COnSuppliers::OnInitDialog()
    {
    m_list.InsertItem(0,_T("Tab Page1"));
    return true;
    }
    一样报错,从新写一个工程,也是出现同样的问题
      

  7.   

    呵呵~估计问题是这样的:你定义的m_list变量是和对话框资源中list control控件起来的吗?我刚才建了一个对话框工程试了一下,如果二者没关联起来,就会报你给出的错误。你看一下你的工程有类似这样一句代码吗?DDX_Control(pDX, IDC_LIST1, m_list);
      

  8.   

    #include "stdafx.h"
    #include "Manager2.h"
    #include "OnSuppliers.h"
    // COnSuppliers 对话框IMPLEMENT_DYNAMIC(COnSuppliers, CDialog)COnSuppliers::COnSuppliers(CWnd* pParent /*=NULL*/)
    : CDialog(COnSuppliers::IDD, pParent)
    {}COnSuppliers::~COnSuppliers()
    {
    }void COnSuppliers::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_LIST1, m_list);
    }
    BOOL COnSuppliers::OnInitDialog()
    {
    CRect rect;
     m_list.GetClientRect(rect);
    m_list.SetItemText(0, 1, _T("jacky"));
    return true;
    }BEGIN_MESSAGE_MAP(COnSuppliers, CDialog)
    END_MESSAGE_MAP()
    有添加,(有模式对话框)如果在主界面添加就没问题,点击按钮生产有模式对话框就问题来了
      

  9.   

    我是用消息处理函数里用DoModal()调用的
      

  10.   

    那位热心大哥把E-MAIL留下,帮我调试一下好吗 
      

  11.   

    你的CListCtrl控件你是加在主对话框中,还是子对话框中
      

  12.   

    何为有模式对话框?是模态对话框吧?
    ---------------------
    我刚才建了个对话框工程,然后又加了一个模态对话框,然后在主对话框中通过按钮调出模态对话框,我也是将
    m_list.InsertColumn(0,_T("ID"), LVCFMT_LEFT, 40, 0);放在模态对话框的OnInitDialog()中的,也没出现你说的那种问题啊?
      

  13.   


    void CManager2App::OnA1()
    {
    COnSuppliers suppliers;
    suppliers.DoModal();
    // TODO: 在此添加命令处理程序代码
    }调用函数
      

  14.   

    chenlycly,能不能借你的工程借我参考一下。[email protected]
      

  15.   

    Thank you!
    我的问题解决了,忘记了CDialog::OnInitDialog();
    thanks VisualEleven and chenlycly
      

  16.   

    因为我们的项目中用List控件的比较多,还没出过问题,无论是使用模态对话框还是非模态对话框~