Windows NLS API Locale Information Constants是否在winapi-rs crate或Rust生态系统的其他地方可用?
我需要从Rust调用GetLocaleInformationEx
,并在winapi-rs crate(here)的um::winnls
模块中找到了它。LCType
输入是一个Locale Information Constant--我在crate的任何地方都找不到这些定义。
作为一种变通方法,我已经查找了数值并对它们进行了硬编码,但我有一种挥之不去的感觉,我错过了一些东西。
2条答案
按热度按时间p4tfgftt1#
ntdef.rs中定义了一些常量。如果你想使用ntdef.rs中没有的常量,你需要通过Locale Information Constants查找这些值,然后传递原始值或者自己定义。
use self::winapi::shared::ntdef::{LOCALE_SYSTEM_DEFAULT, LOCALE_USER_DEFAULT};
另外,请确保在Cargo.toml中配置为使用winnls,否则在尝试使用GetLocaleInformationEx时会出现无法解决的导入错误。
[dependencies] winapi = {version = "0.3", features = ["winuser", "std", "libloaderapi", "errhandlingapi", "winnls"] }
qzwqbdag2#
这是一个迟来的答案,但由于其他人也可能有这个问题,所以我仍然会写我的解决方案:
winapi crate并不包含所有的locale信息常量,windows-sys crate却包含。
在this Microsoft site上有一个所有可用的Locale信息常量的列表。这些在
windows_sys::Win32::Globalization
中也可以作为常量使用,请参阅here。如果你想使用winapi而不是windows-sys,我建议你只需要在那里查找相应的locale的值,并在Rust代码中定义你自己的常量。