Visual C++ 中顺序对话框的最佳做法是什么?
What's the best practice for sequential dialogs in Visual C++?
我有一个应用程序,它必须根据一些输入数据计算一些数字。这些数据可以来自文件,也可以手动输入(只有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
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 派生类销毁的最佳实践是什么
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 在reactor中存储eventHandlers的最佳方式是什么
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 将一系列整数放入类的最佳方法是什么?
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 在nodejs中使用本机代码的最佳方法是什么?
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 在 c++ 中解析数据包数据的最佳方法是什么?
- 初始化数组、"memset"或" {//value} "的最佳方法是什么?
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 在向量中查找大于 0(或通常为 k)的最小元素的最佳方法是什么?