绝顶之上

会当凌绝顶,一览众山小。

解决 sciter-rs 使用过程中的几个问题

发布日期:

总结一下,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 下的解决方法:

例如,现在已经在 ./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