Visual C++ 中顺序对话框的最佳做法是什么?

What's the best practice for sequential dialogs in Visual C++?

本文关键字:是什么 最佳 C++ 顺序 对话框 Visual      更新时间:2023-10-16

我有一个应用程序,它必须根据一些输入数据计算一些数字。这些数据可以来自文件,也可以手动输入(只有5-6个值(。我想展示一个对话框,基本上会问"你想从文件加载数据还是手动输入数据?"。如果选择了"加载",我希望显示一个文件打开对话框,然后解析所选文件以提取相关数据。如果选择"手动",我想呈现一个自定义的CDialog子类,用户可以在其中输入从数据文件中提取的相同数据。

我的主要问题是,把这些串在一起的最佳实践是什么?

我应该像这样按顺序调用对话框吗?

// pseudocode
void foo(){
    status = MessageBox("Do you want to enter data from file?");
    if (status == YES) {
        filename = CFileDialog();
        inputdata = processInputFile(filename);
    }
    else {
        CManualEntryDialog.doModal();
        inputdata = CManualEntryDialog.data;
    }
    // calculate output data from input data...
}

或者我应该将CDialog子类化并调用CFileDialog&CManualEntryDialog是否来自子层事件处理程序?

似乎至少有相当一部分用户会理解所涉及的数字;它们并不"神奇"。因此,在加载后显示它们是有意义的。您可以很好地将其与手动输入选项集成。

设计一个包含6个输入字段的对话框。添加一个"加载"按钮来填充这些字段,但不要从那里继续。这允许用户验证并可能修改这些值。(当他需要输入文件中5个值中的4个时很有用(。

请在6个输入字段周围使用分组框控件,并在外部使用加载/确定/取消按钮。这表明这三个按钮适用于整个组。

这种方法的用户体验优势在于它更易于探索。你不会强迫用户选择如何与你的应用程序交互。在这种复杂程度下,它不太可能压倒你的目标受众。

对于顺序对话框,我建议使用CPropertyPage和CPropertySheet类执行向导过程。

以下是一个示例:http://www.dotnetheaven.com/Uploadfile/bulentozkir/pp_wizard04212005064904AM/pp_wizard.aspx

http://www.informit.com/library/content.aspx?b=Visual_C_PlusPlus&seqNum=79

相关文章: