MFC对话框之间数值的更新

Ginie 2011-03-25 06:11:17
我写了一个对话框,里面放了个tab control,tab有三个标签,分别对应的类是DCPart1,DCPart2,DCPart3,我在DCPart2中放了些edit控件,一个添加按钮,已经连上数据库,然后在DCPart3中我放了个list control控件,用来显示数据库中的数据,现在的问题是,我在DCPart2中一添加完数据,然后选标签3,也就是DCPart3,它不会显示实时更新,我就把它改成了在DCPart2中点添加按钮时,调用DCPart3中的一个用来显示数据的方法让它重新显示,我在父对话框DFirst中声明了它们的三个实例m_Dpart1,m_Dpart2,m_Dpart3,然后我在DPart2中用到了 DFirst* pDlg = (DFirst*)AfxGetMainWnd();方法来让父对话框更新实例DPart3,这样就会显示更新了,然后我又添加了一个对话框,也是要点击一个按钮更新下数据,那么我再加这句话就出错了,该怎么办呀
...全文
253 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
liutianwen1234 2012-10-15
  • 打赏
  • 举报
回复
m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,0);
m_ImageList.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1)));
m_ImageList.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON2)));
m_ImageList.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON3)));
m_ImageList.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON4)));
m_ImageList.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON5)));
m_UserList.SetImageList(&m_ImageList,LVSIL_NORMAL);//这句出错的
m_UserList.InsertItem(0,"小明",0);
m_UserList.InsertItem(1,"小雨",1);
m_UserList.InsertItem(2,"小强",2);
m_UserList.InsertItem(3,"小红",3);
m_UserList.InsertItem(4,"小张",4);
怎么出错了~
for information on how your program can cause an assertion failure
Ginie 2011-03-26
  • 打赏
  • 举报
回复
问题解决了,谢谢各位了,不知道怎么了,重开了下电脑就好了,怪事呢
Ginie 2011-03-26
  • 打赏
  • 举报
回复
调试后下面显示的结果是
Name Value
-pDlg 0X0012f064 {DFirst hWnd=0x000506d4}
+CDialog {CDialog hWnd=0x000506d4}
+m_Dpart3 {DCPart3 hWnd=0x00130728}
+m_Dpart2 {DCPart2 hWnd=0x00080738}
+m_Dpart1 {DCPart1 hWnd=0x000506d0}

King_hhuang 2011-03-26
  • 打赏
  • 举报
回复

DFirst* pDlg = (DFirst*)AfxGetMainWnd();
pDlg->m_Dpart3.m_List.DeleteAllItems();
pDlg->m_Dpart3.OnAddList();

设置断点,单步调试一下,看看pDlg指针是否有效
Ginie 2011-03-26
  • 打赏
  • 举报
回复
越来越高深了,有点糊了
zyrr159487 2011-03-26
  • 打赏
  • 举报
回复
看下堆栈错误最后在哪里
Ginie 2011-03-26
  • 打赏
  • 举报
回复
新对话框实现更新操作,代码如下

void DCUpdate::Onupdate()
{

m_Unumber.GetWindowText(number);
m_Uname.GetWindowText(name);
m_Uage.GetWindowText(age);
m_Usex.GetWindowText(sex);
m_Uclass.GetWindowText(uclass);
m_Umajoy.GetWindowText(majoy);
m_Uhobby.GetWindowText(hobby);



UpdateData(FALSE);
CString c_number; //定义一个变量接收m_Unumber传递的值
m_Unumber.GetWindowText(c_number);
ADO m_Ado;
m_Ado.OnInitADOConn();
m_Ado.m_pConnection->CursorLocation=adUseClient;
CString sql;
sql.Format("select * from infomation where 编号 = '%s'",c_number);
m_Ado.m_pRecordset = m_Ado.OpenRecordset(sql);


try
{
MessageBox(name);

m_Ado.m_pRecordset->PutCollect("姓名",(_bstr_t)name);
m_Ado.m_pRecordset->PutCollect("年龄",(_bstr_t)age);
m_Ado.m_pRecordset->PutCollect("性别",(_bstr_t)sex);
m_Ado.m_pRecordset->PutCollect("专业",(_bstr_t)majoy);
m_Ado.m_pRecordset->PutCollect("班级",(_bstr_t)uclass);
m_Ado.m_pRecordset->PutCollect("爱好",(_bstr_t)hobby);
m_Ado.m_pRecordset->Update();
m_Ado.CloseRecordset();
m_Ado.CloseConn();
MessageBox("修改成功");
EndDialog(0);
}
catch(...)
{

MessageBox("修改失败,请重新修改");
}

DFirst* pDlg = (DFirst*)AfxGetMainWnd();
pDlg->m_Dpart3.m_List.DeleteAllItems();
pDlg->m_Dpart3.OnAddList();
}

guya1314 2011-03-26
  • 打赏
  • 举报
回复
关于新对话框的代码
guya1314 2011-03-26
  • 打赏
  • 举报
回复
没讲清楚
最好上代码
Ginie 2011-03-26
  • 打赏
  • 举报
回复
我的父窗口是DFirst,实例化的三个实例是m_Dpart1,n_Dpart2,m_Dpart3,我在m_Dpart2中想更新m_Dpart3中的数据库内容,我这样写的
DFirst* pDlg = (DFirst*)AfxGetMainWnd();
pDlg->m_Dpart3.m_List.DeleteAllItems();
pDlg->m_Dpart3.OnAddList();
这样写的话没问题,可以实现,然后我又添加了一个Dialog,同样想实现这个功能,我也是这样写的,没改代码,它就会弹出
Debug Assertion Failer!
Program:E:\VC++ workspace\Student\Debug\Student.exe
File:afxcmn.ini
Line:148
后来我把 DFirst* pDlg改成 DFirst* pDlg1了,还是这个错误,请教下各位,麻烦了
  • 打赏
  • 举报
回复
通过每个对话框的指针来进行数据传递
Eleven 2011-03-25
  • 打赏
  • 举报
回复
通过它们的父窗口tab控件来中转
古都一猿 2011-03-25
  • 打赏
  • 举报
回复
没看明白 上代码 最好
King_hhuang 2011-03-25
  • 打赏
  • 举报
回复
应该不会啊,出什么错啊

15,979

社区成员

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

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