vc 两个列表框控件直接内容显示的问题

工程中建立了2个对话框Dlg1、Dlg2,每个对话框中分别有个列表框控件List1、List2,想在第2个列表框中自动显示出第一个列表框中的内容,感觉应该很简单的,程序如... 工程中建立了2个对话框Dlg1、Dlg2,每个对话框中分别有个列表框控件List1、List2,想在第2个列表框中自动显示出第一个列表框中的内容,感觉应该很简单的,程序如下:
CDlg1 sample;
CString sProductName = sample.List1.GetItemText( 1,0 );
list2.SetItemText(1,0, sProductName);
结果却在运行时报错,不知道错在哪里?是因为在运行上段程序时,第1个对话框及其列表的变量已经销毁了吗?不懂
展开
 我来答
真白的纱雾d442c
2011-08-08 · TA获得超过1093个赞
知道小有建树答主
回答量:265
采纳率:0%
帮助的人:539万
展开全部
正好相反,是因为第1个对话框并没有完全创建。
CDlg1 sample;只是建立了一个CDialog类的变量,
但是如果不调用sample.DoModal、sample.Create等操作时,
MFC并不会为这个变量创建相关联的窗体等界面元素,
此时sample.List1实际上是并未创建的,因此直接使用GetItemText会出错。
追问
其中Dlg2是通过点击Dlg1中的某个按钮然后DoModal()弹出来的,那我想知道我应该怎么将这个变量关联到相应的窗体元素?本人比较低级,望指导!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灌胶点胶机制造37
2011-08-09 · TA获得超过120个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:247万
展开全部
还有就是2个控件之间的值传递要这样

CDlg1 dlg;
没有分配内存空间,不能转换-得这样!
CString str_p;
str_p = List1.GetItemText(nIdx,0);
CString* pStr = (CString*)(List1.GetItemData(nIdx));
CString* pNStr = new CString;
*pNStr = *pStr;
int newItem =dlg.List2.InsertItem(0,str_p);
dlg.List2.SetItemData(newItem,(DWORD)pNStr);
dlg.DoMadul();
更多追问追答
追问
非常感觉你的回答。可是我的Dlg2是通过点击Dlg1中的某个按钮然后DoModal()弹出来的,你的代码中dlg为什么能访问list2啊,dlg是CDlg1的变量,可是list2是CDlg2中的控件啊……
也许是我表达的不清楚,希望您能不嫌麻烦进一步帮我解决这个问题啦!
追答
晕啦,没注意。自己改下就可以啊!list1,list2都是列表框相关联的成员变量
CDlg2 dlg;
没有分配内存空间,不能转换-得这样!
CString str_p;
str_p = List1.GetItemText(nIdx,0);
CString* pStr = (CString*)(List1.GetItemData(nIdx));
CString* pNStr = new CString;
*pNStr = *pStr;
int newItem =dlg.List2.InsertItem(0,str_p);
dlg.List2.SetItemData(newItem,(DWORD)pNStr);
dlg.DoModal();
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式