求救高手:本人在对话框里加里一个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 );//插入列
就出现下图的错误,搞了半天,都不知哪里错了???
头文件里: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 );//插入列
就出现下图的错误,搞了半天,都不知哪里错了???
放在OnInitialDlg中,在构造中还没有形成窗口呢
{
//初始化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 );//插入列
}
结果也是一样
这句不能放在构造函数中,放到OnInitDialog初始化中
BOOL COnSuppliers::OnInitDialog()
{
m_list.InsertItem(0,_T("Tab Page1"));
return true;
}
一样报错,从新写一个工程,也是出现同样的问题
#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()
有添加,(有模式对话框)如果在主界面添加就没问题,点击按钮生产有模式对话框就问题来了
---------------------
我刚才建了个对话框工程,然后又加了一个模态对话框,然后在主对话框中通过按钮调出模态对话框,我也是将
m_list.InsertColumn(0,_T("ID"), LVCFMT_LEFT, 40, 0);放在模态对话框的OnInitDialog()中的,也没出现你说的那种问题啊?
void CManager2App::OnA1()
{
COnSuppliers suppliers;
suppliers.DoModal();
// TODO: 在此添加命令处理程序代码
}调用函数
我的问题解决了,忘记了CDialog::OnInitDialog();
thanks VisualEleven and chenlycly