Results 36 comments of Dusk

> 使用@eritpchy构建的[版本](https://github.com/eritpchy/TrafficMonitor/actions/runs/2288673613)发现: > > 对于点阵字体,D2D渲染会导致程序直接崩溃,例如Terminal、Terminal Greek与Terminal Greek 869等系列点阵字体。 ![image](https://user-images.githubusercontent.com/36123081/167380068-9473dd82-7205-4055-a4a0-a2a865608ca2.png) > > 对于部分字体,D2D会出现 fallback 到默认字体的现象,如FOT-Aokane Std,GenSenMaruGothic TW TTF,Victor Mono等 > > 经过检查发现,这些出现 fallback 问题所涉及到的字体,均没有使用“为所有用户安装”这一选项。 而MFC渲染则没有这个问题。 > > ![image](https://user-images.githubusercontent.com/36123081/167380399-cf24a892-d6ff-42f8-b3f4-c2c1cb904020.png) > > ![image](https://user-images.githubusercontent.com/36123081/167380421-0f471d09-6fb3-48b4-bcb3-edd1f54b76b9.png)...

> 开启 Direct2D 渲染前,整块任务栏窗口都可以右键或双击。开启 Direct2D 渲染后,只有在渲染了文字的地方操作才会正确响应,在其它部分操作会变成任务栏右键。 ![8d1ea689-5cf5-412f-99e4-f53f4023278d](https://user-images.githubusercontent.com/56779163/171179414-031f7104-ecae-48a0-bfc7-acb0706ac3d0.gif) [ ](https://user-images.githubusercontent.com/56779163/171179414-031f7104-ecae-48a0-bfc7-acb0706ac3d0.gif) ![8d1ea689-5cf5-412f-99e4-f53f4023278d](https://user-images.githubusercontent.com/56779163/171179414-031f7104-ecae-48a0-bfc7-acb0706ac3d0.gif) [ ](https://user-images.githubusercontent.com/56779163/171179414-031f7104-ecae-48a0-bfc7-acb0706ac3d0.gif) 后续会给渲染的背景给个1的透明度,应该能解决问题

@zhongyang219 目前PR的功能已经实现了,在我电脑上也没有测出什么bug,我觉得可以考虑合并了。

> 非常感谢你为TrafficMonitor做出的改进。我近期计划更新TrafficMonitor1.74版本,以解决Windows11 22h2中任务栏显示的问题。为了保险起见,这个pr我打算在版本更新后再合并。 好

> If the program is set to be `DPIAware`, the `WM_DPICHANGED` event or similar should be available from the main event loop when the DPI changes. https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows https://docs.microsoft.com/en-us/windows/win32/api/_hidpi/ https://github.com/tringi/win32-dpi I...

建议使用aux_source_directory这样的语句来添加代码文件到CMake工程

分支拉下来跑了一下,使用CMake 3.24.0-rc2,Ninja 1.11.0构建出错。 >[build] [70/73 28% :: 9.187] Building CXX object OpenHardwareMonitorApi\CMakeFiles\OpenHardwareMonitorApi.dir\OpenHardwareMonitorImp.cpp.obj [build] FAILED: OpenHardwareMonitorApi/CMakeFiles/OpenHardwareMonitorApi.dir/OpenHardwareMonitorImp.cpp.obj [build] C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1433~1.316\bin\Hostx64\x64\cl.exe /nologo /TP -DOPENHARDWAREMONITOR_EXPORTS -DOpenHardwareMonitorApi_EXPORTS -DUNICODE -D_AFXDLL -D_UNICODE -ID:\Sources\CPP\OpenSourceProjects\TrafficMonitor\OpenHardwareMonitorApi -ID:\Sources\CPP\OpenSourceProjects\TrafficMonitor\include /DWIN32 /D_WINDOWS /W3 /GR...

看了下,想要Ninja这类非Visual Studio生成器支持clr比较困难,需要手动补充/FU选项或者在代码中使用#using语句,所以这块先不管了(摆烂)。 添加/MP后,CMake直接build还是没有使用多核编译,但是使用VS打开项目再编译是有效的,所以我写了个target。 ```CMake if(CMAKE_GENERATOR MATCHES "Visual Studio") add_custom_target(BUILD_ALL_WITH_MP_OPTION COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target ALL_BUILD --config $ -- -m) endif() ``` 即直接给调用MSBuild的命令后面补了个 -m 选项。使用CMake编译时选BUILD_ALL_WITH_MP_OPTION目标,就可以启用多核编译了。

这个项目的C++版本其实是14

还可以通过一个是MSTaskSwWClass类的,标题为 运行中的应用程序 的窗口的右边缘确定任务栏图标的范围吧。 在双屏模式下这个类只有这一个窗口存在,应该可以直接找到。 不知道可不可以在这个窗口尺寸变化的时候修改这个窗口的位置来实现避免和这个程序冲突(代价是居中情况下任务栏图标只能靠左一些了吧)。 系统版本 22000.556。