wxWidgets UI 库 简单示例和 高清屏 DPI 适配
wxWidgets 是一种跨平台开发的 UI 库,win mac OS ubuntu 都有很好的本地实现。
版权友好,个人商业用途都可以,静态编译也比较容易,开发的比较出名的软件有:Filezilla 、Aegisub
官网
https://www.wxwidgets.org/downloads/
https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.1/wxWidgets-3.2.1.7z
源码
https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.1/wxWidgets-3.2.1-docs-chm.zip
手册
编译源码
找到这个路径:D:\source\vc\wxWidgets\wxWidgets-3.2.1\build\msw下的 wx_vc17.sln,用vs2022打开。
官方文档中列出的 VC 与 MSVS 对应关系:
VC++ 7, 8, 9, 10, 11, 12, 14, 15 and 16 ( MSVS 2003, 2005, 2008, 2010, 2012, 2013, 2015, 2017 and 2019)
选择Debug,x64,配置类型选择静态库!然后生成解决方案。这样就在 D:\source\vc\wxWidgets\wxWidgets-3.2.1\lib\vc_x64_lib 路径下生成了vc_x64_lib文件夹。
创建一个空项目,编辑工程属性,须在【项目属性页】做如下修改:
1
配置属性 - C/C++ - 常规 - 附加包含目录:添加
D:\source\vc\wxWidgets\wxWidgets-3.2.1\include\msvc
D:\source\vc\wxWidgets\wxWidgets-3.2.1\include
2
配置属性 - C/C++ - 预处理器 - 预处理器定义:添加 WXMSW 、_UNICODE、NDEBUG,这里若不加 _UNICODE,
则需要在 配置属性 - 高级 - 高级属性 - 字符集 选择【使用 Unicode 字符集】
_UNICODE
NDEBUG
3
配置属性 - 链接器 - 常规 - 附加库目录:添加 D:\source\vc\wxWidgets\wxWidgets-3.2.1\lib\vc_x64_lib
4
配置属性 - 链接器 - 系统 - 子系统:选择【窗口】(默认为【窗口】)
有很多例子,基本的都有
D:\source\vc\wxWidgets\wxWidgets-3.2.1\samples
DPI 适配,现在显示器越来越大了,分辨率也越来越大,尤其是笔记本,一般都工作在缩放模式 如的笔记本:
如果 应用未做 DPI 适配,显示效果就是直接放大,显示效果很模糊
如何让 程序来动态处理 DIP
Windows上的高 DPI 桌面应用程序开发
https://learn.microsoft.com/zh-cn/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows
解决 dpi 显示问题
https://stackoverflow.com/questions/67456410/wxwidgets-dpi-awareness-v2-not-working-as-expected
具体的做法是:
右击项目 -> 配置属性 -> 清单工具 -> 输入和输出 -> 附加清单文件
D:\source\vc\wxWidgets\wxWidgets-3.2.1\include\wx\msw\wx_dpi_aware.manifest %(AdditionalManifestFiles)
看了下 git log ,是2019年的时候加入的,所以要用新版本的 wxWidgets