作为Microsoft Excel 2016的最新版本,我们正在更改应用程序以支持每个监视器支持HDPI。
我们可以缩放自己的对话框,并在窗口的DPI更改时获取通知,但是在调用ICTPFactory.CreateCTP时使用的ActiveX控件始终以96 dpi创建,并且只有SystemAware DPI感知。如果在父窗口上使用GetDpiForWindow和GetWindowDpiAwarenessContext,则可以看到我们窗口的父窗口(CMMOcxHost)为96dpi / SystemAware,但CMMOcxHostChildWindowMixedMode窗口及其父级均为144dpi / MonitorAware。
下图显示了Spy ++的窗口(请参见下文)。红线下方的窗口都是作为SystemAware创建的(无疑是通过更改线程DPI感知来创建的),但是上方的窗口都是监控器。我希望CMMOcxHost是MonitorAware,这样我们就可以以高分辨率绘制窗口。
DPI awareness for window and parents
是否有一个注册表设置告诉Office我们的任务窗格ActiveX控件支持HDPI?托管我们的ActiveX控件的DLL有一个清单,表明对Windows 10的支持,并且为true,因此我认为Office任务窗格没有使用该清单来确定DPI意识?
Excel / Office开发人员团队的成员可以提出建议吗?