VC++中两个对话框传递数据
一个基于对话框的程序除了主对话框还带两个(非模式对话框,)结构是主对话框(按钮)->打开对话框1(点按钮)->打开对话框2对话框1上有个combo控件我想在关闭对话框2的...
一个基于对话框的程序
除了主对话框
还带两个(非模式对话框,)
结构是主对话框(按钮)->打开对话框1(点按钮)->打开对话框2
对话框1上有个combo控件
我想在关闭对话框2的时候 自动刷新对话框1上的combo控件
请问如何处理
开始打算在关闭对话框2的时候 自建一个自定义消息 发送到对话框1
对话框1再刷新
现在是得不到对话框1的指针 (或得到的是错误的)
CMydlgAPP *pApp=(CMydlgApp *)AfxGetApp();
ClogonDlg *pDlg=(ClogonDlg *)pApp->GetMainWnd();
pDlg->m_combo1.insertstring(-1,"123123");
在COMBO1里添加字符
提示错误 展开
除了主对话框
还带两个(非模式对话框,)
结构是主对话框(按钮)->打开对话框1(点按钮)->打开对话框2
对话框1上有个combo控件
我想在关闭对话框2的时候 自动刷新对话框1上的combo控件
请问如何处理
开始打算在关闭对话框2的时候 自建一个自定义消息 发送到对话框1
对话框1再刷新
现在是得不到对话框1的指针 (或得到的是错误的)
CMydlgAPP *pApp=(CMydlgApp *)AfxGetApp();
ClogonDlg *pDlg=(ClogonDlg *)pApp->GetMainWnd();
pDlg->m_combo1.insertstring(-1,"123123");
在COMBO1里添加字符
提示错误 展开
3个回答
展开全部
"结构是主对话框(按钮)->打开对话框1(点按钮)->打开对话框2"
根据顺序,主对话框包含对话框1的头文件,对话框1又包含对话框2的头文件,这个是不用怀疑的.至于你说的问题,是想通过对话框2里控件的输入传递到对话框1呢,还是就是单一的要刷新对话框1的数据?
前者可以这样:在对话框2类里定义成员变量,比如对话框2中是个文本框,就可以为其添加成员变量CSting str,这样在对话框关闭时UpdateData(FALSE)一下.str就保留了您输入的数据.然后在对话框1类里处理你需要的操作,对话框2的对象为Dlg2的话,就用Dlg2.srt,实现了参数的传递.
后者的话就更简单了,因为是单一的更新数据,不需要对话框2任何数据,所以直接在对话框1的类中直接操作就可以.比如现实对话框2时用的DoModal(),那就在DoModal()之后直接SetWindowsText()或者()SetDlgItemText()或者给COMBO1直接添加字符等等都行,COMBO的使用方法在网上搜一下,应该不会出问题的.
其实只要记住一个点,就是不要企图在对话框2的类代码中直接操作对话框1,一般都是先把对话框2的操作记录到自己的成员变量(控件变量不行,因为关闭时都销毁了),关闭后就可以通过类似Dlg2.*获得相应数据.
根据顺序,主对话框包含对话框1的头文件,对话框1又包含对话框2的头文件,这个是不用怀疑的.至于你说的问题,是想通过对话框2里控件的输入传递到对话框1呢,还是就是单一的要刷新对话框1的数据?
前者可以这样:在对话框2类里定义成员变量,比如对话框2中是个文本框,就可以为其添加成员变量CSting str,这样在对话框关闭时UpdateData(FALSE)一下.str就保留了您输入的数据.然后在对话框1类里处理你需要的操作,对话框2的对象为Dlg2的话,就用Dlg2.srt,实现了参数的传递.
后者的话就更简单了,因为是单一的更新数据,不需要对话框2任何数据,所以直接在对话框1的类中直接操作就可以.比如现实对话框2时用的DoModal(),那就在DoModal()之后直接SetWindowsText()或者()SetDlgItemText()或者给COMBO1直接添加字符等等都行,COMBO的使用方法在网上搜一下,应该不会出问题的.
其实只要记住一个点,就是不要企图在对话框2的类代码中直接操作对话框1,一般都是先把对话框2的操作记录到自己的成员变量(控件变量不行,因为关闭时都销毁了),关闭后就可以通过类似Dlg2.*获得相应数据.
展开全部
shangerdi的方法适用于模态对话框,逍遥忘我的方法适用于非模态对话框,不过不是建立一个1的类对象,而是建立一个1的类指针,比如叫pDlg1。在弹出2的那个按钮的响应函数里,new生成一个2的对象后,将其pDlg1=this,则以后在2的成员函数中就可以用pDlg1来处理1的信息了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在对话框2上建立一个对话框1的类对象,然后直接用.最后调用 UpdateData(FALSE);这样你试试可以不,具体我也没试过,一般都用模式的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询