总结一下,Sciter 是一款较为优秀的用户界面库。其 Rust 绑定 sciter-rs
为 Rust 编程语言实现用户界面提供了一种可行方案。为了方便日后学习使用,记录几个小问题的解决方案。
首先说明一下写这篇文章时用到的环境:
OS = "Windows-10.2"
sciter-js = "4.4.8.36"
rustc = "msvc 1.60.0"
sciter-rs = "0.5.58"
Q: 如何隐藏发布版本的小黑窗?
A: 在 main.rs
顶行添加宏:
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
Q: 如何打包资源文件并在程序中使用?
A: 假定要打包的文件夹是 ./src/ui
,将其打包成资源文件 ui.rc
并且放在 ./src
下:
path-to-sciter-js-sdk/bin/windows/packfolder.exe "./src/ui" "./src/ui.rc" -binary
在程序中使用这个资源文件,例如 ./src/ui
里面包含文件 main.htm
,将这个文件作为主窗体:
fn main() {
let resources = include_bytes!("ui.rc");
let mut frame = sciter::Window::new();
frame.archive_handler(resources).expect("Invalid archive");
frame.load_file("this://app/main.htm");
frame.run_app();
}
Q: 如何将程序支持高分屏,以解决高分屏下字体模糊?
A: 只提供 Windows 下的解决方法:
- 方法一:通过调用类似 Windows API SetProcessDPIAware 来支持高分屏。
- 方法二(推荐):打包应用清单文件,这里将给出具体实现方法:
例如,现在已经在 ./target/release/
下生成了应用程序 your-release-program.exe
,想让该程序支持高分屏。打开 Developer Command Prompt for VS 2022
:
cp path-to-sciter-js-sdk/demos/usciter/win-res/dpi-aware.manifest ./target/release/dpi-aware.manifest
cd ./target/release/
mt.exe -manifest dpi-aware.manifest -outputresource:"your-release-program.exe;1"
Q: 如何在 64 位编译环境下编译 32 位程序?
A: 先添加 32 位工具链,然后在编译时指定该工具链:
rustup target add --toolchain=i686-pc-windows-msvc
cargo build --target=i686-pc-windows-msvc
cargo build --release --target=i686-pc-windows-msvc