VC的MFC关于子窗口中的列表控件(LIST控件)在主窗口中调用问题,悬赏!!!

基于对话框的主窗口和子窗口程序。子窗口是非模态的。
我在主窗口中创建一个按键(key),当按下此按键后弹出一个子窗口(Dlg1),在Dlg1中我有个LIST Control的列表控件(m_CalList)。
我想按下key后在弹出的子窗口Dlg1的列表中显示我预定的数据,其中我在Dlg1的类中手动添加了OnInitDialog()函数,并在里面对LIST控件进行了初始化,并且LIST是以report的方式显示)。具体如下:
1. m_CalList.InsertColumn(0,"变量名称",LVCFMT_LEFT,120);
2. m_CalList.InsertColumn(1,"描述",LVCFMT_LEFT,120);

m_CalList.SetExtendedStyle(LVS_EX_FULLROWSELECT);

m_CalList.InsertItem(1,"Time");
m_CalList.SetItemText(1,1,"喷油定时");
为什么编译能通过,但运行时,我点击Key键,总会出现弹出“终止、忽略、重试”对话框的错误。
我在1.和2.处设置断点,然后DEBUG,会发现,在1.处断点停止,错误貌似是this句柄的值与Dlg1的句柄值不同,这个问题怎么解决呢?
我这个问题与下面的问题类似,但从那个问题,我无法得到有用的信息:http://zhidao.baidu.com/question/61544090.html?an=0&si=1
求帮助!!!!

第1个回答  2011-05-06
可以将数字转化成字符串然后显示到控件上,在获取数据便可以了
eg.
CString str;
str.Format(_T(“%d”), 4);
.AddString(str);
你可以使用泛型集合List<int>或List<double>添加到 List Box

中,首先你把int或double的数据添加到泛型集合中,然后再把泛型集合填充到 List Box就可以了!
第2个回答  2011-05-06
非模态对话你是如何弹出的呢?
可以动态创建, CDlg1 *pDlg1 = new CDlg1;
pDlg1->Create(ID_*****);
pDlg1->ShowWindow(SW_NORMAL);
如果你对话框没有创建出来,肯定有问题的,列表框加到子对话框中,会进行DDX执行,如果子对话框指针this不合法,其内部列表控件无法寄存的。

肯定是哪里ASSERT通不过了!
此类问题属于常见问题追问

恩,是动态创建的,和你的代码一样,最后弹出的错误对话框也是debug assertion failed!

第3个回答  2011-05-06
CListCtrl::InsertItem的起始值是0,m_CalList.InsertItem(1,"Time"); 应该是0。
你的CListCtrl是怎么创建的?跟窗口上的List相关联了吗?追问

哦,是的,但这个不是运行失败的原因,谢谢啦!

追答

那你的m_CalList是怎么创建的呢?有关联到窗口控件吗?

追问

没有,怎么关联?我只是在子窗口的类中添加了声明CListCtrl m_CalList;

追答

那肯定不行,在Dlg1 的DoDataExchange下面加入
DDX_Control(pDX, List控件的ID, m_CalList);就行了

追问

哦,谢谢,我试试

我加你好友吧
我毕设需要用MFC,但我是菜鸟!= =

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网