语言: C ++
开发环境: Microsoft Visual C ++
使用的库: MFC
问题:我创建了一个首选项配置应用程序。左侧是一个列表框,其中包含可以更改的“父”类别的设置,当他们单击一个时,他们可以更改的设置显示在列表框的右侧,就像在许多大型首选项对话框中一样。 (的 See screenshot from the creator )
这是我的问题。我在使用UpdateData时遇到了困难,因为我从未在首选项框中调用DoModal(),因为它们是父对话框容器的子项,并且它们只是绑定到对话框中的图片控件。我执行设置焦点和显示/隐藏子对话框的组合。
当用户选择“保存这些”时,它们会显示另一个对话框,允许他们检查要保存的特定首选项窗格(以生成XML配置文件)。显然我需要为他们的输入抓取对话框,但是当我调用UpdateData时,我总是在调用DoModal()之前调用UpdateData。
现在我不确定如何获得价值观。我对MFC很新,也无济于事。就是这样。无论如何,我要感谢任何人都可以提供的任何帮助。
~Jon
答案 0 :(得分:2)
您不必为了使用UpdateData()而调用DoModal()。我不确定你是什么意思“Yelled at”。要使用UpdateData(),您需要使用DDX(另请参阅code project article)。从您的问题中不清楚您是否已通过将dlg控件ID与数据成员相关联来使用DDX。
在您的场景中,当您离开特定对话框时,可能需要调用UpdateData(),以将屏幕上的值保存到数据成员。
您可以考虑的另一种选择是使用基于CPropertySheet的树控件CTreePropSheet。您还可以使用Google CTreePropertySheet查找对话框树控件的更多实现。