TC官方合作论坛

标题: tc程序在高分屏(高dpi模)下的缩放模式问题 [打印本页]

作者: winbei2010    时间: 2016-10-17 16:42
标题: tc程序在高分屏(高dpi模)下的缩放模式问题
本帖最后由 winbei2010 于 2016-10-17 17:14 编辑

[attach]24163[/attach]

附上msdn上的描述:

1,PROCESS_DPI_AWARENESS

typedef enum _PROCESS_DPI_AWARENESS {
  PROCESS_DPI_UNAWARE            = 0,
  PROCESS_SYSTEM_DPI_AWARE       = 1,
  PROCESS_PER_MONITOR_DPI_AWARE  = 2
} PROCESS_DPI_AWARENESS;


2,SetProcessDpiAwareness

HRESULT WINAPI SetProcessDpiAwareness(
  _In_ PROCESS_DPI_AWARENESS value
);


Return code
S_OK ,执行成功
E_INVALIDARG,执行失败,参数错误
E_ACCESSDENIED,执行失败,返回具体错误码

根据以上win api的描述,tc目前是告诉了windows,PROCESS_SYSTEM_DPI_AWARE

我的程序会在启动的显示器上自己支持DPI aware, 所以不需要对我进行DWM 虚拟化。 但是当我的程序被拖动到其他DPI不一样的显示器时, 请对我们先进行system DWM虚拟化缩放。

因为tc的界面压根就不支持dpi自动适配,这样的结果就造成,windows使用了xp的高dpi模式。很少有人为了这个**显示器吧。

xp下界面上控件的缩放标准不一致,各自为政,然后大小不一。。。本来美观整洁的界面,变的扭曲变形。

我在想官方要么真的实现高dpi自动缩放,这样最好,要么就让所有控件字体都用 MS Shell Dlg2,这样dpi是不会虚,不会变形的。

再退一步,真不想费事再搞了。就把SetProcessDpiAwareness 这个模式改了吧PROCESS_DPI_UNAWARE ,告诉windows 我不支持 dpi缩放。自动等比放大好了

宁可虚化也比严重变形好。高分屏以后越来越普及。 1080入门,尚且还好。2k以上tc的界面就没法看了,全靠猜。




作者: winbei2010    时间: 2016-10-17 16:52
自己尝试用api修改,也失败。不想改软件的,也给指条路子走吧。
作者: winbei2010    时间: 2016-10-17 17:08
@Abin
@TC管理员
@kevinqq
请关注下这个问题!
作者: winbei2010    时间: 2016-12-1 15:20
此贴终结,已经自己修改pe文件头实现 界面等比放大,再也不神经错乱了

方法使用

resource hacker打开生成后的 exe文件,

24-1-1033里面

/WindowsSettings">true</ms_windowsSettings:dpiAware>

改为

/WindowsSettings">false</ms_windowsSettings:dpiAware>

保存后,重新另存exe即可

原理,修改exe的 mianfest内的 程序dpi支持,由默认支持 true到不支持false,交由系统来等比放大。问题完美解决!
作者: sunshadow_ja    时间: 2017-4-22 09:55
我也遇到这个蛋疼问题了,先谢谢大神。。一会去试试
作者: rexshao    时间: 2017-8-3 15:00
[attach]25326[/attach]  也遇到同样问题搜索无果 resourcehacker 改了也无效最终这么解决了。。。。无语了





欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1