CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

基于对话框的程序,主对话框和弹出对话框如何交流

楼主rainfall007(夏天的雨)2006-03-17 00:40:52 在 VC/MFC / 基础类 提问

我建了一个基于对话框的程序,对access数据库进行查找.  
  由于找到多条记录,于是我又建了一个dlgB想让多条记录显示在dlgB里让用户选择,  
  然后再把用户所选的第几条记录(一个数值nSelect)返送回主对话框.  
  我在对dlgB里的listctrl插入记录似乎不能正常执行.  
  我在mainDlg.h里  
  CdlgB   dlgB;  
  在mainDlg.cpp里的一个函数里进行操作  
  try  
  {  
  rs.Open(dbOpenDynaset,strSQL);  
  ...  
  CListCtrl   *ctlList   =   (CListCtrl   *)dlgB.GetDlgItem(IDD_DIALOG1)   ;  
  rs.MoveLast();  
  nLoaded=rs.GetRecordCount();  
  if   (nLoaded==1)   var   =   rs.GetFieldValue(0);  
  else    
  {        
  rs.MoveFirst();  
  while   (!rs.IsEOF())    
  {  
  var   =   rs.GetFieldValue(0);  
  ctlList->InsertItem(nItem,CCrack::strVARIANT(var));  
  nItem++;  
  rs.MoveNext();  
  }  
  }  
  ...  
  catch(CDaoException*   e)  
  {  
  DisplayDaoException(e);  
  e->Delete();  
  }  
   
  结果执行之后,在dlgB里的listctrl不显示记录,而且我也不知道该怎么把选好的nSelect传给主程序  
  请各位帮帮忙 问题点数:30、回复次数:12Top

1 楼zuzubo(kewen)回复于 2006-03-17 02:37:55 得分 5

你的dlgB对话框是在哪个地方DoModal(   )的啊?  
  你应该先建立dlgB,然后赋值给dlgB的listctrl里,最后DoModal(   );  
  要取dlgB的某个值,你可以DoModal(   )后,用dlgB.listctrl.GetColumn;Top

2 楼syy64(太平洋)回复于 2006-03-17 08:24:30 得分 2

两个对话框应该互相声明对方的指针作为自己的成员变量。Top

3 楼Elysium(東鱗覀爫)回复于 2006-03-17 08:39:16 得分 2

或者建立一个消息通讯,将一个LVITEM或索引值发送到主窗口处理Top

4 楼laiyiling(陌生人[MVP])回复于 2006-03-17 08:42:10 得分 17

http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=203350Top

5 楼he_sl(he_sl)回复于 2006-03-17 08:46:20 得分 2

互相保存对方的指针,直接调用相关函数或发消息Top

6 楼xx_jj()回复于 2006-03-17 08:52:48 得分 0

指针就行Top

7 楼rainfall007(夏天的雨)回复于 2006-03-17 12:23:43 得分 0

先谢谢各位,我晚上试一下Top

8 楼rainfall007(夏天的雨)回复于 2006-03-17 21:07:28 得分 0

pdlg=new     CDialog2;      
    pdlg->Create(IDD_STANDARD,this);//IDD_STANDARD是Dialog2的资源      
    pdlg->m_list.DeleteAllItems();//m_list是对话框2上的列表控件      
    pdlg->ShowWindow(SW_SHOWNORMAL);      
   
  最后一行怎么pdlg->DoModal();会出错呢?  
  Top

9 楼rainfall007(夏天的雨)回复于 2006-03-17 21:20:52 得分 0

如果直接  
  CDialog2   dlg2;  
  这时不能修改dlg2里的东西  
  但是能:  
  dlg2.DoModal();  
   
   
  如果:  
  pdlg=new     CDialog2;      
    pdlg->Create(IDD_STANDARD,this);//IDD_STANDARD是Dialog2的资源      
    pdlg->m_list.DeleteAllItems();//m_list是对话框2上的列表控件    
  这时能修改东西,  
  但是不能.domodal();Top

10 楼syy64(太平洋)回复于 2006-03-18 11:19:06 得分 2

无模式对话框不能用DomodulTop

11 楼rainfall007(夏天的雨)回复于 2006-03-18 11:37:54 得分 0

那如何在模式对话框里获得主对话框的一个变量值呢?  
  就差这一点就可以搞定了  
  或者说怎么得到主对话框里的变量指针呢Top

12 楼rainfall007(夏天的雨)回复于 2006-03-18 11:42:39 得分 0

dlg1.h里include   "dlg2.h"  
  dlg2.h里include   "dlg1.h"  
  这样好象就有错误了  
   
  两个对话框应该互相声明对方的指针作为自己的成员变量。应该怎么做呢?Top

相关问题

  • 基于对话框程序的弹出对话框的最小化问题
  • 如何在对话框程序在主对话框出现前先弹出一个登陆对话框
  • 关于程序不在 Ctrl+Alt+Del 弹出的对话框内
  • 如何在程序里关闭由MessageBox()弹出的对话框?
  • PHP程序中如何使浏览器弹出对话框???
  • 怎么在程序中去掉弹出的对话框
  • 单文档程序弹出对话框为什么出错?
  • 怎么在asp.net的WEB程序中弹出WinForm的对话框?
  • 怎样使弹出的对话框位于程序的中央?
  • MDI程序新建时如何不弹出新建对话框?

关键词

  • 指针
  • 对话框
  • dlgb
  • pdlg
  • domodal
  • dlg
  • 变量
  • idd
  • listctrl
  • rs

得分解答快速导航

  • 帖主:rainfall007
  • zuzubo
  • syy64
  • Elysium
  • laiyiling
  • he_sl
  • syy64

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo