关于文本框内容初始化的问题

ftkghost 2005-08-24 04:48:34
以下是我建的工程:
建一个基于Dialog的MFC程序(所有设置都是默认)
在对话框中加入一个Edit控件

给类CMyDlg添加变量m_strEdit 类型为CString与Edit控件关联

在CMyApp::InitInstance()中把m_pMainWnd = &dlg去掉
在if (nResponse == IDOK)后加上语句:
AfxMessageBox(dlg.m_strEdit);
CMyDlg的构造函数中
初始化m_strEdit的值

问题出在下面:
Edit中文本初始化可以有三种方法:
1.在CMyDlg构造函数中初始化变量m_strEdit
2.在CMyDlg::OnInitDialog()中,调用CDialog::OnInitDialog前改变m_strEdit的值
3.在CMyDlg::OnInitDialog()中,调用CDialog::OnInitDialog之后改变m_strEdit的值,然后加入语句UpdateData(false)。

当我在构造函数中初始化变量m_strEdit的值后(例如 m_strEdit=str1)
为什么在CMyDlg::OnInitDialog()中,调用CDialog::OnInitDialog前改变m_strEdit的值可以使得初始化的值改变,而在调用CDialog::OnInitDialog之后改变m_strEdit的值而不加上语句UpdateData(false),文本框中内容仍是构造函数中初始化的值。

即使没有进行DDX,在CDialog::OnInitDialog之后改变m_strEdit的值为str2,点击ok按钮后,AfxMessageBox显示的内容应该是str2,为什么仍然是str1?
...全文
331 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tufaqing 2005-08-30
  • 打赏
  • 举报
回复
我说的就是CMyDialog,它不是从CDialog继承过来的吗?
ftkghost 2005-08-26
  • 打赏
  • 举报
回复
那不是 CMyDialog吗?
tufaqing 2005-08-25
  • 打赏
  • 举报
回复
没有创建CDialog窗口?那你的ok按钮哪儿来的?
ftkghost 2005-08-25
  • 打赏
  • 举报
回复
CDialog窗口被销毁?
并没有创建 CDialog的窗口阿
tufaqing 2005-08-24
  • 打赏
  • 举报
回复
CDialog窗口已销毁,而没有调用UpdateData(FALSE),临时数据被还原。
ftkghost 2005-08-24
  • 打赏
  • 举报
回复
不管有没有调用UpdateDate,m_strEdit的值都被改变为str2了,而且点击ok按钮发生在值改变之后,为什么AfxMessageBox内显示的值不是str2?

在调用CDialog::OnInitDialog之后改变m_strEdit的值而不加上语句UpdateData(false),这种情况下应该是初始化的文本为str1,而AfxMessageBox的内容为str2吧
fooooot 2005-08-24
  • 打赏
  • 举报
回复
我想也是UpdateData()出了问题
windcsn 2005-08-24
  • 打赏
  • 举报
回复
CDialog::OnInitDialog中有UpdateData(FALSE)这个语句

16,472

社区成员

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

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

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