今天在一片老外的文章上看到如下一段话:
Note that you should almost never use UpdateData in a dialog. If you use it, you should use it only in a modeless dialog. There is, as far as I can tell, absolutely no excuse for using UpdateData in a modal dialog. A simple rule: If you're calling UpdateData in a modal dialog, you're not using MFC correctly.
(注意,你在对话框中应该尽量不要使用UpdateData函数。如果你要使用它,也最多在非模式对话框中使用,而绝对不要在模式对话框中使用。一个简单原则:如果在一个模式对话框中调用UpdateData,那你就没有正确使用MFC。)那位仁兄能告诉我为什么。

解决方案 »

  1.   

    起始我觉得无所谓,当然用控件变量也是好,但是代码量也多,衡量一下再使用就行,我也不觉得用了UpdateData就不是MFC啊
      

  2.   

    在模式对话框中,消息都在此模式对话框中不能传递出去,UpdateData函数用了也白用
      无怪乎,我的程序中模式对话框中的消息老是传不出去!!!
      

  3.   

    呵呵不用怎么通过DDE取得更新的数据呢?
      

  4.   

    在DLG中使用UPDATEDATA,无效,我测试过多次,可以使用INVALIDATE
      

  5.   

    原文出自:http://www.codeproject.com/cpp/avoidupdatedata.asp#xx24797xx我感觉文章的论点根本就无法说明不能使用UpdateData
    1. 不使用UpdateData就没有使用ms的很有用的dde
    2. 该文中列举的问题都可以用其他简单的方法解决。
      

  6.   

    这个观点呢,我不置可否,好像有点道理
    因为我实在是用过,好像也是在非模式下面用的,好像是一个打印的Dlg
    这个Dlg是经过改写的系统的PrintDlg,呵呵!
      

  7.   

    不理解原文中为什么这么说。
    但我确实不大用UpdateData(其实已经我从一开始就不用它),因为我不喜欢通过ClassWizard添加那么多变量,我喜欢直接调用函数,读取或设置界面信息,如GetDlgItemText()/SetDlgItemText()。