Native Windows GUI 对话框使用指南

Native Windows GUI 对话框使用指南

对话框概述

在 Native Windows GUI 框架中,对话框是预制的特殊窗口,主要用于获取用户输入值。与常规控件不同,对话框属于资源(Resources)而非控件(Controls),这意味着它们不需要父控件,也不能包含子控件。

框架提供了三种内置对话框类型,每种都通过特性(feature)开关控制:

  1. 文件对话框 (file-dialog 特性):用于获取文件路径进行加载或保存操作
  2. 颜色对话框 (color-dialog 特性):以RGB格式获取和保存颜色数据
  3. 字体对话框 (font-dialog 特性):选择系统字体并支持自定义选项

基本使用方法

对话框通过构建器模式创建,文档中详细列出了各参数说明。调用对话框的核心方法是 run(parent),这个方法会阻塞当前函数执行,因为对话框拥有独立的事件循环。

if app.open_directory_dialog.run() {
    app.file_dialog_result.clear();
    if let Ok(directory) = app.open_directory_dialog.get_selected_item() {
        app.file_dialog_result.set_text(&directory);
    }
}

重要注意事项:

  • 对话框运行时,同一线程中的其他窗口应被禁用
  • 设置父窗口参数会自动处理禁用逻辑
  • 用户选择的值会保存在对话框对象中,需通过特定方法获取

文件对话框详解

文件对话框基于Windows通用项目对话框实现,支持三种操作模式:

  • FileDialogAction::Open:打开文件
  • FileDialogAction::OpenDirectory:打开目录
  • FileDialogAction::Save:保存文件

多选功能

通过构建器的 multiselect 标志或 set_multiselect 方法可启用多选模式,但仅适用于打开操作。

结果获取

  • 单选对话框:get_selected_item()
  • 多选对话框:get_selected_items()

调用错误的方法将返回错误。

颜色对话框详解

颜色对话框返回RGB格式的颜色值,范围从 [0u8, 0u8, 0u8](黑色)到 [255, 255, 255](白色)。

自定义颜色功能

支持保存最多16种自定义颜色:

  • 用户通过对话框界面设置
  • 开发者通过 set_saved_color(index, color) 设置
  • 通过 saved_color(index) 获取

构建时可通过 saved_color(index, color) 方法预设颜色。

字体对话框详解

字体对话框返回 FontInfo 对象描述用户选择的字体(注意:不是字体资源本身)。

字体信息使用

获取的字体信息可用于创建字体资源。需要注意的是,框架提供的默认字体资源较为简单,仅支持:

  • 字号
  • 字体系列
  • 字重

自定义对话框实现

Native Windows GUI 没有采用传统的Win32方式处理自定义对话框,因为传统方式涉及资源文件使用,且对话框在同一线程的不同消息循环中运行。

推荐实现方式:

  1. 将用户对话框作为常规GUI对象实现
  2. 在独立线程中运行
  3. 通过线程间通信处理交互

这种设计避免了传统方式的复杂性,同时提供了更好的灵活性和可控性。

最佳实践建议

  1. 合理使用特性开关,只包含应用实际需要的对话框类型
  2. 始终为对话框指定父窗口,确保正确的窗口禁用行为
  3. 对于长时间运行的对话框,考虑使用多线程实现
  4. 妥善处理对话框返回的可能错误情况
  5. 对于频繁使用的对话框,考虑重用对话框实例而非重复创建

通过掌握这些对话框的使用方法,开发者可以高效地为应用添加标准的Windows交互体验,同时保持代码的简洁性和可维护性。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值