TC官方合作论坛

 找回密码
 立即注册
查看: 2104|回复: 5

tc程序在高分屏(高dpi模)下的缩放模式问题

[复制链接]
发表于 2016-10-17 16:42:43 | 显示全部楼层 |阅读模式
本帖最后由 winbei2010 于 2016-10-17 17:14 编辑



附上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的界面就没法看了,全靠猜。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

 楼主| 发表于 2016-10-17 16:52:00 | 显示全部楼层
自己尝试用api修改,也失败。不想改软件的,也给指条路子走吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-17 17:08:09 | 显示全部楼层
@Abin
@TC管理员
@kevinqq
请关注下这个问题!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-1 15:20:44 | 显示全部楼层
此贴终结,已经自己修改pe文件头实现 界面等比放大,再也不神经错乱了

方法使用

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

24-1-1033里面

/WindowsSettings">true</ms_windowsSettings:dpiAware>

改为

/WindowsSettings">false</ms_windowsSettings:dpiAware>

保存后,重新另存exe即可

原理,修改exe的 mianfest内的 程序dpi支持,由默认支持 true到不支持false,交由系统来等比放大。问题完美解决!
回复 支持 反对

使用道具 举报

发表于 2017-4-22 09:55:14 | 显示全部楼层
我也遇到这个蛋疼问题了,先谢谢大神。。一会去试试
回复 支持 反对

使用道具 举报

发表于 2017-8-3 15:00:55 | 显示全部楼层
  也遇到同样问题搜索无果 resourcehacker 改了也无效最终这么解决了。。。。无语了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-4 08:12 , Processed in 0.035565 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表