VC 子对话框调用主对话框中的ListCtrl控件出错

winning11xuhao 2011-03-23 12:18:15
我做的是一个设备登记的小程序,要求是在主对话框上有一个ListCtrl控件 初始化的时候从一个txt文件中把已有的设备信息读出来,然后有一个登记按钮,点击之后弹出另一个子对话框,对话框上只有几个编辑框。我想做的是通过想编辑框中输入信息,点击确定按钮时信息直接添加在主对话框中的ListCtrl控件中,但是我在子对话框的类中调用主对话框的和ListCtrl控件相关联的对象时却报错,请高手指教
...全文
219 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljshiyong2 2012-07-26
  • 打赏
  • 举报
回复
我也遇到同样的问题 啊 求指导 楼主
winning11xuhao 2011-03-23
  • 打赏
  • 举报
回复
仍然有错 我的子对话框是点击按钮创建的
代码如下
pDlg = new CRegisterDlg();
pDlg ->Create(IDD_DIALOG1,NULL);
pDlg->ShowWindow(SW_SHOW);
Eleven 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 winning11xuhao 的回复:]
这是子对话框中按钮里写的代码
CDeviceDataDlg dlg;

GetDlgItemText(IDC_DEVICE_NUM, strRDeviceNum);
GetDlgItemText(IDC_DEVICE_NAME, strRDeviceName);
GetDlgItemText(IDC_DEVICE_SCALE, strRDeviceScale);
GetDlgItem……
[/Quote]
因为你的CDeviceDataDlg类的对象dlg还没有和窗口对象相关联起来,即你的窗口还没有创建
winning11xuhao 2011-03-23
  • 打赏
  • 举报
回复
我的m_list就是CDeviceDataDlg 中的对象 我想调它应该怎么调啊
wltg2001 2011-03-23
  • 打赏
  • 举报
回复
不知道你的子对话框和主对话框的关系,不过一般用下面的代码应该是可以的:
CDeviceDataDlg *dlg=(CDeviceDataDlg *)GetParent();
然后用dlg指针操作就行了。

wltg2001 2011-03-23
  • 打赏
  • 举报
回复
dlg.m_list.InsertItem(dlg.posall," "); //单调到这的时候就报错了
=========
当然错了,你上面只是定义了一个CDeviceDataDlg dlg;并没有和dlg相对应的实际对话框存在啊
winning11xuhao 2011-03-23
  • 打赏
  • 举报
回复
这是子对话框中按钮里写的代码
CDeviceDataDlg dlg;

GetDlgItemText(IDC_DEVICE_NUM, strRDeviceNum);
GetDlgItemText(IDC_DEVICE_NAME, strRDeviceName);
GetDlgItemText(IDC_DEVICE_SCALE, strRDeviceScale);
GetDlgItemText(IDC_DEVICE_BORN, strRDeviceBorn);
GetDlgItemText(IDC_DEVICE_BNAME, strRDeviceBName);
GetDlgItemText(IDC_DEVICE_TIME, strRDeviceTime);
GetDlgItemText(IDC_DEVICE_PRICE, strRDevicePrice);
GetDlgItemText(IDC_DEVICE_STATE, strRDeviceState);
GetDlgItemText(IDC_DEVICE_USER, strRDeviceUser);

dlg.m_list.InsertItem(dlg.posall," "); //单调到这的时候就报错了
dlg.m_list.SetItemText(dlg.posall, 0, strRDeviceNum);
dlg.m_list.SetItemText(dlg.posall, 1, strRDeviceName);
dlg.m_list.SetItemText(dlg.posall, 2, strRDeviceScale);
dlg.m_list.SetItemText(dlg.posall, 3, strRDeviceBorn);
dlg.m_list.SetItemText(dlg.posall, 4, strRDeviceBName);
dlg.m_list.SetItemText(dlg.posall, 5, strRDeviceTime);
dlg.m_list.SetItemText(dlg.posall, 6, strRDevicePrice);
dlg.m_list.SetItemText(dlg.posall, 7, strRDeviceState);
dlg.m_list.SetItemText(dlg.posall, 7, strRDeviceUser);

是什么原因呢 请指教
winning11xuhao 2011-03-23
  • 打赏
  • 举报
回复
编译可以通过 但是单调到调用变量的时候就报错了
Dreadnought 2011-03-23
  • 打赏
  • 举报
回复
代码?错误信息?
winning11xuhao 2011-03-23
  • 打赏
  • 举报
回复
谢谢 我知道哪里错了
向立天 2011-03-23
  • 打赏
  • 举报
回复
你这么用肯定是不行的
调用子对话框之前把主对话框的list的指针先传给子对话框
wltg2001 2011-03-23
  • 打赏
  • 举报
回复
刚看了一下,那一句还有一个问题:
dlg->m_list.InsertItem(dlg.posall," ");
红色的部分肯定要改掉。
winning11xuhao 2011-03-23
  • 打赏
  • 举报
回复
有没有谁能给我写个小例子 帮我发到邮箱里可以吗 winning11xuhao@126.com 不胜感激,比较着急
wltg2001 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 winning11xuhao 的回复:]
你的方法我试过了 还是那个地方报错
[/Quote]
刚看了一下,那一句还有一个问题:
dlg->m_list.InsertItem(dlg.posall," ");
winning11xuhao 2011-03-23
  • 打赏
  • 举报
回复
你的方法我试过了 还是那个地方报错
wltg2001 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 winning11xuhao 的回复:]
因为你的CDeviceDataDlg类的对象dlg还没有和窗口对象相关联起来,即你的窗口还没有创建


如何关联 能用代码写一下吗 谢谢了
[/Quote]
我上面不是写了吗?
不是如何关联的问题,而是如果在子对话框取得主对框的指针,一般用
CDeviceDataDlg *dlg=(CDeviceDataDlg *)GetParent();就行了,然后可以:
dlg->m_list.InsertItem(dlg.posall," "); 就行了。
winning11xuhao 2011-03-23
  • 打赏
  • 举报
回复
因为你的CDeviceDataDlg类的对象dlg还没有和窗口对象相关联起来,即你的窗口还没有创建


如何关联 能用代码写一下吗 谢谢了

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧