我建立了一个MFC基于对话框的程序,在上面设置了一个复选框,又给复选框关联了一个BOOL变量。我发现构造函数里,这个BOOL变量被赋值为FALSE,且运行程序后,复选框默认是未选中的,这没有问题。后来,我试着在构造函数里,把这个FALSE改为TRUE,结果运行程序后,复选框就变成选中的了。我又试了一下,把构造函数里改回赋值为FALSE,而在OnInitdialog()里把这个BOOL变量设置为TRUE,结果运行后,复选框竟然是未选中状态……
我知道希望默认选中的话,可以用SetCheck(BST_CHECKED)。我想问的是,在构造函数里赋值和在OnInitdialog()里赋值为什么结果会不同呢?
谢谢指教。

解决方案 »

  1.   

    在OnInitDialog函数中会调用UpdateData(FALSE);,进入到DoDataExChange函数中,F11自己跟踪一下就清楚了
      

  2.   

    OnInitDialog也要调用UpdateData(FALSE)吧,把变量反应到控件上去。
      

  3.   

    OnInitDialog函数中如果没有UpdateData(FALSE),变量虽改,你是看不到的。
      

  4.   

    我不知道大家看没看清我的问题……
    我知道在对话框出现前,会调用UpdateData(FALSE)。我遇到的情况是,我在OnInitDialog中把BOOL赋值为TRUE,运行后,复选框为啥没有打钩?
      

  5.   

    我试过了,手动调用updatdata即可,原来基于对话框的MFC程序不属于模态的,不会调用updatedata