|
本帖最后由 mdyblog 于 2016-4-19 11:32 编辑
1) 为什么 楼主的程序, 在你这里显示没有达到 设计 目标.
因为 缺少 字体 %windir%\fonts\simsun*
程序需要这个字体, 才能自动调节.
2) DPI有2种处理, 1中是2分法:
资源(rc)中的大下, 是自动缩放的.
代码的大下数值,则是固定的像素单位.
VC的程序, RC和程序代码分开的, 采用此法.
3) 统一法:
资源(rc)中的大下 也是固定的像素单位.
PECMD的资源和代码 是混写的.
这样, 在编写者来说, 很容易 两者混同.
比如:
_SUB WIN1,W287H254,新窗口1,
ITEM ITEM1,L80T43W60H30,ITEM1,
ENVI @ITEM1.POS=100
_END
_SUB WIN1,W287H254,新窗口1,
ITEM ITEM1,L80T43W60H30,ITEM1,
这2行是资源
ENVI @ITEM1.POS=100
这1行是代码
往右移动20像素.
ENVI @ITEM1.POS=100
ENVI @ITEM1.POS=100 中100一定是 "固定的像素单位"
这是,作者一定以为原来就是在80的位置,
因为前面: ITEM ITEM1,L80T43W60H30,ITEM1,
说的就是80.
而这80是资源中的80.
如果自然中的80是可缩放的, 比如放大50%, 那实际是120了.
下面的代码则要改成
ENVI @ITEM1.POS=120
环境放大系数不同, 这个值也是不同的.
增加设计复杂度.
还有 要兼容6.0的代码. 6.0就这么干的.
4) 可以自己在脚本中处理DPI, 反向调整字体法:楼主的方法.
5) 模拟缩放.
REGI #HKCU\Control Panel\Desktop\WindowMetrics\AppliedDPI,Font_Size
CALC Scale=%Font_Size% / 96 //放大系数
然后更具这个系数, 动态调整程序中的参数
REGI #HKCU\Control Panel\Desktop\WindowMetrics\AppliedDPI,Font_Size
CALC #W=287*%Font_Size% / 96
CALC #H=254*%Font_Size% / 96
_SUB WIN1,W%W%H%H%,新窗口1,
_END
|
6) PECMD 的SUB可以增加-sacale 开关 (目前没有).
自动调整 资源中的大小
那些动态调整的程序(比如 分区管理),可就要大改了.
|
|