新手求教,关于模态对话框的返回

golfwk597 2011-07-25 02:03:55
新建了一个基于FormView的单文档视图,在界面中有一Button,

CFormView::OnButton()
{
CTestDlg dlg
if(IDOK==dlg.DoModal())
{
m_a1=dlg.a1
}
}
点击调用一模态对话框TestDlg,在Dlg中有一个Combo1用于
输入数据,有一按钮Save
void CTestDlg::OnSave()
{
GetDlgItemText(IDC_COMBO1,A1);

a1=atoi(A1)

}

现在情况是这样的,我在COMBO中输入数据后,按下SAVE,然后按下IDOK,退出对话框后,视图类能得到最后的数据m_a1=a1

但是,当我在已经将控件值传给视图类的情况下,我想进对话框查看,不按下SAVE(太麻烦了,难道不改变数据,每次都要按下SAVE?),而是直接按IDOK退出,a1的值却改变了,

调式了下变成-858993460。请问这是什么原因,各位大大帮忙看下,如果我描述的不清楚的话,说下,我在解释


...全文
118 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
woaixiaocaomei 2011-07-25
  • 打赏
  • 举报
回复
可以了,用了自己的方法,将配置的值通过ONSAVE按钮,写入注册表。然后在DLG的oninitdialog中,先

将上一次保存的控件值读取后初始化,这样就防止了没初始化导致退出后,a1的值为随机数传给视图,谢谢大

家,结贴
woaixiaocaomei 2011-07-25
  • 打赏
  • 举报
回复
帮你顶下~
golfwk597 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 buyong 的回复:]
吧OnSave代码写到OnOK中

引用楼主 golfwk597 的回复:
新建了一个基于FormView的单文档视图,在界面中有一Button,

CFormView::OnButton()
{
CTestDlg dlg
if(IDOK==dlg.DoModal())
{
m_a1=dlg.a1
}
}
点击调用一模态对话框TestDlg,在Dlg中有一个Combo1用……
[/Quote]

你好,是在TestDlg中重载OnOK吗
golfwk597 2011-07-25
  • 打赏
  • 举报
回复
是这样的,这里的成员都是临时写的,做为个例子,视图类是做上位机读写串口。而这个对话框主要用于配置

一些参数,比如波特率等。情况大致是我所说的,在按下SAVE保存的情况下,是可以配置参数,而直接退出的

参数就不是前一次的了。是进行了新的副值。
buyong 2011-07-25
  • 打赏
  • 举报
回复
吧OnSave代码写到OnOK中
[Quote=引用楼主 golfwk597 的回复:]
新建了一个基于FormView的单文档视图,在界面中有一Button,

CFormView::OnButton()
{
CTestDlg dlg
if(IDOK==dlg.DoModal())
{
m_a1=dlg.a1
}
}
点击调用一模态对话框TestDlg,在Dlg中有一个Combo1用于
输入数据,有一按钮Save
void CTestDlg::……
[/Quote]
tzxx 2011-07-25
  • 打赏
  • 举报
回复
只要你按下对话框中的OK按钮,FormView中就会执行m_a1=dlg.a1赋值操作。
虽然你没有按下SAVE键,dlg.a1的值也会在对话框对象构造后有一个初始值,故此赋值操作仍然会起作用。
-858993460应当就是一个随机的初值。
建议dlg.a1的值应在构造函数中进行初始化,且a1作为类的成员变量,应当加m_前缀。
不太清楚楼主要实现的功能,进一步的修改就不好判断了。
呔妖怪来嘛 2011-07-25
  • 打赏
  • 举报
回复

CTestDlg dlg //做成CFormView的成员变量

CFormView::OnButton()
{
if(IDOK==dlg.DoModal())
{
m_a1=dlg.a1
}
}

ouyh12345 2011-07-25
  • 打赏
  • 举报
回复
重载OnOK函数,UpdateData后,再计算

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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