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 

 

posted @ 2022-09-23 21:47  宁次  阅读(1155)  评论(0编辑  收藏  举报