C++程序中两个对话框之间传递数据的问题

jiafeicat6 2017-09-07 10:55:08
请大家帮助我实现以下功能:
点击确定按钮,主对话框Combobox控件“CAN通道号”选择的数字在子对话框的Edit控件中同步显示。

谢谢。

界面如下:
...全文
308 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiafeicat6 2017-09-07
  • 打赏
  • 举报
回复
谢谢,我试试,成功了就结贴。
mk_lucifer 2017-09-07
  • 打赏
  • 举报
回复
给你贴段代码 这是更新时的执行,大致内容就是如果时保存,就将IDC_COMBO1控件的选择内容写再a里,如果是恢复(读取),则将a恢复到 IDC_EDIT1控件。 DoDataExchange(CDataExchange* pDX) { DDX_Control(pDX,IDC_COMBO1,box); if(pDX->m_bSaveAndValidate==TRUE) box.GetLBText(0,a); else DDX_Text(pDX,IDC_EDIT1,a); CDialogEx::DoDataExchange(pDX); } //这个就是你选择的事件, OnCbnSelchangeCombo1() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); UpdateData(FALSE); } 图简单,但无章法就这要那个用 OnCbnSelchangeCombo1() { box.GetLBText(0,a); DDX_Text(pDX,IDC_EDIT1,a); } 但这么搞没办法总体上控制操作。建议一切数据交换都放在DoDataExchange(CDataExchange* pDX)其他任何地方不要写
mk_lucifer 2017-09-07
  • 打赏
  • 举报
回复
第一句话可以忽略,最开始并没注意到你用的是MFC,准备告诉你C++语言无框架的裸奔方法,所以全是扯淡。。
mk_lucifer 2017-09-07
  • 打赏
  • 举报
回复
数据的事件处理,即数据上下文里有Changed事件。这是最简单易行的方式。 不过C++里没有事件,但事件本质是函数回掉,所以用同样原理也可以实现。 很简单只要在DoDataExcharge 仍一句 DDX_Text(pDX, EditID,Var) Var就是你要绑定的变量。 顺便给你将一下原理,MFC的无论是窗口还是对话框,都继承了两个方法,一个叫UpdateData,一个叫 DoDataExcharge ,这两个函数就是用来实现数据更新。 道理很简单,UpdateData(bool true_flase), 是个公共方法,TRUE代表保存,即UI控件值保存到变量,false代表反向,将变量值写到控件显示。 可以类比文件保存,和文件读取功能。 调用者不关心你到底保存了什么,读取了什么,他只控制读取还是保存, 对话框编写者则需要对实际动作负责,这时就要编写DoDataExcharge UpdateData在内部调用DoDataExcharge,他是个虚方法,你可以继承来做任何事, 你需要在这里具体些更新代码DDX_Text(pDX, EditID,Var)就是用来改变控件文本的,pDX里包含更新要用的必须参数,特别是里边有更新方向的参数。当然作为抽象类,你可以在里面做任何事,只要你门编程严格按照规范,靠UpdateData(bool true_flase)来更新数据,而不是自己随意一个地方写,那么这就是一个很棒的东西。你可以在这里控制是否应该更新,或者记录操作日志,和检擦编辑错误。 不过MFC这个东西,过去看来真的很棒,不过和C#的 Binding 标签的易用性相比,你只能感叹,技术革新一大目的事为懒人准备的。。MFC确实老了。。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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