我在对话框模板编辑器中创建了一个对话框IDD_MYDIALOG,并为它添加了一个编辑框控件IDC_MYPHONE。并基于此对话框模板创建了一个CDialog的派生对话框类CMyDlg。在对话框模板编辑器中,我按住Ctrl键双击IDC_MYPHONE编辑控件,为CMyDlg类增加了一个int型成员变量m_nPhone。此时,ClassWizard正确地在CDialog::DoDataExchange()函数中加入了如下代码DDX_Text(pDX, IDC_MYPHONE, m_nPhone);也就是说,对话框中的控件成功地与成员变量绑定。同时,在CMyDlg类的构造函数中,ClassWizard为我加入了下列初始化代码:m_nPhone = 0;但是,我想在对话框显示的时候,让编辑控件中显示数字999。所以我就在CMyDlg::OnInitDialog()中将成员变量m_nPhone重新赋值为999。因为在DoDataExchange()中,控件IDC_MYPHONE已经和m_nPhone绑定,按理说我在对话框显示前改变了m_nPhone的值,那么对话框在显示时,编辑控件应该显示999。可事实上却不是这样,它仍然显示的是在构造函数中的初始值0,这是为什么?难道与对话框控件绑定的变量,不能被代码控制吗?请指点迷津,谢谢。

解决方案 »

  1.   

    修改后使用UpdateDate(false);更新一下取得m_nPhone的值前先用UpdateDate(true);再取值
      

  2.   

    sorry,更正一下应该是UpdateData(false);和UpdateData(true);
      

  3.   

    CDialog::OnInitDialog会调用UpdateData(FALSE)
    在这之前设置m_nPhone
    或者
    在OnInitDialog之后设置m_nPhone并调用UpdateData(FALSE)
      

  4.   

    看来问题就在OnInitDialog() 与UpdateData(FALSE) 这个范围了,请问各位大虾是这样的么??
      

  5.   

    应该用UPdateDate(false)函数取出已绑定的变量的值放到与该变量绑定的sle中去,明白了吗!