More Related Content
Similar to Windows 7兼容性系列课程(4):有针对的兼容性开发(下) (20)
More from Chui-Wen Chiu (20)
Windows 7兼容性系列课程(4):有针对的兼容性开发(下)
- 1. 议程
Windows 7兼容性系列课程(4):
7兼容性系列课程(4): High DPI
有针对的兼容性开发(
有针对的兼容性开发(下)
吴慧锋 兼容性测试工具
MVP 测试与技术支持工程师
www.ssw.com.au
E-mail / MSN: WilsonWu@ssw.com.au
议程 High DPI显示模式
DPI显示模式
介绍 宽度 高度 尺寸 DPI
引入 High DPI 17" WXGA+ 1440 900 17 100
15.4" WXGA+ 1440 900 15.4 110
问题及原理 15.4" WXGA 1280 768 15.4 97
我们该如何处理 14.1" WXGA 1280 768 14.1 106
13.3" WXGA 1280 768 13.3 112
DPI Aware Manifest清单的添加
Manifest清单的添加 17" WUXGA 1920 1200 17 133
17" WSXGA+ 1680 1050 17 117
15.4" WSXGA+ 1680 1050 15.4 129
14.1" WXGA+ 1440 900 14.1 120
13.3" WXGA+ 1440 900 13.3 127
12.1" WXGA 1280 768 12.1 123
15.4" WUXGA 1920 1200 15.4 147
用户使用解析度情况 我们关心哪些问题
显示器最高解析度
设置最高解析度用户 非推荐的解析度的选择造成高质量显示器无用武之地
百分比
由于本地解析度设置的原因文字看起来模糊不清
1280X1024 56%
1400X1050 79% 无法显示高清内容
1600X1200 32% 详细 使用1600X1200解析度的用户
使用1600X1200解析度的用户 720p高清视频需要1280x720的分辨率
720p高清视频需要1280x720的分辨率
1680X1050 66%
1080p则需要1920x1080的分辨率
1080p则需要1920x1080的分辨率
1920X1050 39%
用户选择的解析度 选择该解析度用户百分比
1920X1200 78% 1.9万像素的照面需要1600x1200分辨率来显示
1.9万像素的照面需要1600x1200分辨率来显示
平均值 55% 许多人选择了不正确的屏幕比例
640X480 1%
800X600 7%
1024X768 57%
1280X1024 3%
1600X1200 32%
总计 100.00%
用户降低解析度的目的是为了让文字显得更大 像素化的图像不利于显示 不推荐的屏幕比例造成图像拉伸
© 2002 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. 1
- 2. High DPI 的目标 High DPI 遇到的问题
OEM厂商可以针对显示器将High DPI和显示器推荐解析度设为默认模
OEM厂商可以针对显示器将High DPI和显示器推荐解析度设为默认模
式
用户可以保持最佳显示分辨率
用户使用High DPI来放大文字和界面
用户使用High DPI来放大文字和界面 文字显示不全
整体提高应用程序的使用体验
例如:
例如:
布局问题和图片尺寸
最佳分辨率 用户选择分辨率 可以代替设置 显示增益
1200x1000 1024x768 1200x1000 @ 120 DPI 52%
Win Form程序问题
Form程序问题
1600x1200 1024x768 1600x1200 @ 144 DPI 140%
位图像素化
1600x1200 1200x1000 1600x1200 @ 120 DPI 60%
界面模糊
目标达成的指标是: 使更多用户使用推荐解析度并且使用High DPI,而
目标达成的指标是: 使更多用户使用推荐解析度并且使用High DPI,而
且让应用程序都可以使用DPI aware来支持系统的这项设置。
且让应用程序都可以使用DPI aware来支持系统的这项设置。 字体大小问题
DPI 设置对系统内容影响 DPI各种模式下系统文字显示
DPI各种模式下系统文字显示
96 DPI 120 DPI 144 DPI 字母N在放大13倍后的效果
字母N在放大13倍后的效果
系统情况
GetDeviceCaps(hDC, LOGPIXELSX) 96 120 144 注意使用不同DPI设置下字
注意使用不同DPI设置下字
母的像素
DEFAULT_GUI_FONT (字体高度) 13 16 20 然后注意字母像素的着色,
96 DPI 120 DPI 144 DPI
SM_CXHTHUMB (滚动条型号)
(滚动条 ) 17 21 26 ( p
(11 pixels)
) (13 pixels) (16 pixels)
从这里我们也能看到显示解
析度推荐设置的重要性
SM_XICON (图标宽度) 32 40 48
字体和文字
当DPI设置增大时,系统将使用更多像素来绘制图标,界面
DPI设置增大时,系统将使用更多像素来绘制图标,界面
控件(例如:滚动条)和文字。
桌面组成基础 (DWM) High DPI 情况下
DWM 组成 DWM在组件过程
DWM在组件过程
的桌面 A没有改变
A是在High DPI情况下未
是在High DPI情况下未
使用虚拟化和DPI-
使用虚拟化和DPI-Aware
的程序。
对于DWM, 所有程序在
对于DWM, 系统资源对于A程序没
系统资源对于A
off-screen模式下被DWM
off-screen模式下被DWM 有做出DPI响应
有做出DPI响应
重组并显示在屏幕上。
在High DPI模式下A程序
DPI模式下A
Off-
Off-screen 界面 这些off-screen界面还会使
这些off-screen界面还会使 会显示的大很多
用于缩略图和Flip 3D等内
用于缩略图和Flip 3D等内 B是一个使用DPI-Aware
是一个使用DPI-
容 的应用程序
© 2002 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. 2
- 3. DPI 虚拟化 (自动缩放)
自动缩放) 自动缩放只是一个临时解决方案
自动缩放使得一个应用程序窗体随着DPI设置而自动变化
自动缩放使得一个应用程序窗体随着DPI设置而自动变化
一些跨应用的操作的失败原因是由于管理信息系统与协调空
DWM在组件过程
DWM在组件过程 间不匹配
中将A进行缩放
中将A
A是在96-DPI虚拟化的情
是在96-DPI虚拟化的情 DPI虚拟化可能对一些应用程序不起作用
DPI虚拟化可能对一些应用程序不起作用
况下,未使用DPI Aware
况下,未使用DPI
的程序界面的应用程序
只在应用程序没有使用DPI Aware功能时有效
只在应用程序没有使用DPI Aware功能时有效
默认情况下, 自动缩放只当DPI被设置大于等于144时启用
默认情况下, 自动缩放只当DPI被设置大于等于144时启用
系统资源对于A程序实
系统资源对于A
施了一个在96-DPI模式
施了一个在96-DPI模式 自动缩放功能是为了让应用程序兼容High DPI有一个过渡过程
自动缩放功能是为了让应用程序兼容High DPI有一个过渡过程
的虚拟化显示
在96-DPI模式下A程序
96-DPI模式下A
B是一个使用DPI-Aware
是一个使用DPI-
的应用程序 会显示的稍微小一点
DPI 虚拟化兼容设置 网站浏览中的各种显示问题
在IE 8之前,在High DPI显示方面还存在很多问题,但是在IE 8中几乎
之前,在High DPI显示方面还存在很多问题,但是在IE
可以从每个应用程序的属性窗口的兼容性选项 都被修复,所以建议用户尽可能使用IE 8
都被修复,所以建议用户尽可能使用IE
卡中禁用虚拟化设置
注意:DPI 虚拟化仅在系统DPI大于等于144时
注意:DPI 虚拟化仅在系统DPI大于等于144时
起作用
该功能也可以在DPI自定义设置对话框中设置
该功能也可以在DPI自定义设置对话框中设置
全新的Hight DPI控制面板
新的Hight DPI控制面板 我们该如何处理
修改并完善软件对于High DPI的支持
修改并完善软件对于High DPI的支持
测试使用各种DPI模式显示
测试使用各种DPI模式显示
修复找到的High DPI问题
修复找到的High DPI问题
在应用程序中加入DPI
在应用程序中加入DPI Aware Manifest文件
Manifest文件
确保您的硬件产品支持Windows
确保您的硬件产品支持Windows 7
确保EDID数据正确
确保EDID数据正确
保
测试硬件附带的应用程序对DPI的支持
测试硬件附带的应用程序对DPI的支持
验证终端设备在High DPI下的工作情况
验证终端设备在High DPI下的工作情况
Windows Vista中设置面板
Vista中设置面板 Windows 7 中的设置面板 确保DPI设置在正常的范围内
确保DPI设置在正常的范围内
测试硬件附带的应用程序对DPI的支持
测试硬件附带的应用程序对DPI的支持
DPI设置目前已经在面板页面的首要位置了,
DPI设置目前已经在面板页面的首要位置了,
我们将让这项功能更人性化!
© 2002 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. 3
- 4. High DPI测试列表
DPI测试列表 DPI Aware Manifest
更高级的设置包括安装,卸载以及下面列表中的
设置: <application xmlns="urn:schemas-microsoft-com:asm.v3">
xmlns="urn:schemas-microsoft-
设置 验证 <windowsSettings>
windowsSettings>
1024x768 @ 120 DPI* 当默认显示为800x600时,我们来测试是否存在程序界面超出屏幕范 <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/Windo
xmlns="http://schemas.microsoft.com/SMI/2005/Windo
围以及图片及图标像素化。
wsSettings">true</dpiAware>
注意:如果您的应用程序要求在1024x768分辨率下工作,那么请使
注意:如果您的应用程序要求在1024x768分辨率下工作 那么请使
用1280x960做上述测试 </windowsSettings>
</windowsSettings>
/ S
1600x1200 @ 144 DPI 验证程序界面是否模糊不清,以及所有鼠标操作尤其是鼠标拖放操作, </application>
然后也验证全屏模式是否正常工作。
1600x1200 @ 144 DPI 并且设置 一般在这个模式下界面和按钮不会有不正常的现象,主要查看布局以
DPI Virtualization 为关闭 及图片像素化的问题。
<!--
<!-- See http://msdn2.microsoft.com/en-us/library/ms633543.aspx -->
http://msdn2.microsoft.com/en- -->
(从DPI UI -> Custom -> use XP Style Scaling)
正确方式: 制作一个问题列表,尽可能将这些加入你
正确方式:
的Bug库中,希望在未来的开发中解决相关问题
Bug库中,希望在未来的开发中解决相关问题
更多资源
Whitepaper for Writing DPI Aware Win32 Applications
http://go.microsoft.com/fwlink/?LinkID=129586
EDID Specification
DPI Aware Manifest http://www.vesa.org/Public/EEDIDguideV1.pdf
Information for OEMs configuring OOBE via XML
http://technet.microsoft.com/en-
http://technet.microsoft.com/en-us/library/cc722301.aspx
http://technet.microsoft.com/en-
http://technet.microsoft.com/en-us/library/cc721929.aspx
Windows 7 Engineering Blog High DPI Post
http://blogs.msdn.com/e7/archive/2008/09/13/follow-up-on-high-dpi-
http://blogs.msdn.com/e7/archive/2008/09/13/follow-up-on-high-dpi-
resolution.aspx
http://blogs.msdn.com/e7/archive/2008/09/16/more-follow-up-to-
http://blogs.msdn.com/e7/archive/2008/09/16/more-follow-up-to-
discussion-about-high-
discussion-about-high-dpi.aspx
For more information or questions, send e-mail to
e-
disup@microsoft.com
议程
Application Compatibility Toolkit
Standard User Analyze Application Compatibility
Application Verifier Toolkit
程序问题检测
操作系统版本检测
Orca
查看MSI安装包工具
查看MSI安装包工具
© 2002 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. 4
- 5. “LUA bugs”问题
bugs”问题 检测问题的方法
“LUA bug”是:
bug”是:
程序或新功能仅在管理员权限下正常工作
在普通用户(“LUA”
在普通用户(“LUA”)下工作不正常
且没有任何需要管理员权限才能运行的内容
“LUA bug”通常是应用程序兼容问题的最
bug”通常是应用程序兼容问题的最
b ””通常是应用程序兼容问题的最
常见问题
这些问题在解决之前必须可以被明确找出
Standard User Analyzer Application Verifier
我们如何来做 检测项
开启或关闭一些特殊的检测项来对应用程 Basics
序进行检测 Compatibility
调整各项检测的相关属性 Low Resource Simulation
配置检查站 LuaPriv
运行完成被测程序后检查日志 Miscellaneous
Printing
© 2002 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. 5
- 6. 操作系统版本检测原理
Application Verifier
Myapp.exe
GetVersionEx
6.1
kernel32.dll
操作系统版本检测原理
操作系统版本检测
Myapp.exe 8.2
GetVersionEx()
GetVersionEx()
App Verifier 6.1
kernel32.dll
Orca
MSI安装包编辑工具
MSI安装包编辑工具
检测MSI安装包内部错误
检测MSI安装包内部错误
Orca
Logo认证必备工具
Windows Logo认证必备工具
© 2002 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. 6
- 7. 工具下载
Application Compatibility Toolkit 5.5
5.5
http://www.microsoft.com/downloads/details.aspx?displaylang
Orca =en&FamilyID=24da89e9-b581-47b0-b45e-
=en&FamilyID=24da89e9-b581-47b0-b45e-492dd6da2971
Application Verifier
http://www.microsoft.com/downloads/details.aspx?displaylang
http://www microsoft com/downloads/details aspx?displaylang
=en&FamilyID=c4a25ab9-649d-4a1b-b4a7-
=en&FamilyID=c4a25ab9-649d-4a1b-b4a7-c9d8b095df18
Orca
http://www.microsoft.com/downloads/details.aspx?FamilyId=A
55B6B43-E24F-4EA3-A93E-
55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
其他资源 Question & Answer
Windows Vista Application Development Requirements for
User Account Control Compatibility
http://www.microsoft.com/downloads/details.aspx?FamilyID=b
a73b169-a648-49af-bc5e-
a73b169-a648-49af-bc5e-a2eebb74c16b&DisplayLang=en 如需提出问题,请在此区域输入文字,并单击
Teach Your Apps To Play Nicely With Windows Vista User “问题和解答”右上方的“提问”按钮即可。
问题和解答”右上方的“提问”
Account Control
http://msdn.microsoft.com/msdnmag/issues/07/01/UAC/default
.aspx
Problems of Privilege: Find and Fix LUA Bugs
http://www.microsoft.com/technet/technetmag/issues/2006/08/
LUABugs/
Application Compatibility Cookbook
http://msdn.microsoft.com/library/default.asp?url=/library/en-
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/dnlong/html/AppComp.asp
Advanced Windows Troubleshooting with SysInternals 您也可以选择在微软中文技术论坛上寻求帮助,MSDN中文网络
也可以选择在微软中文技术论坛上寻求帮助,MSDN中文网络
Process Monitor 广播的讲师们会定期在论坛上为大家解答与课程相关的技术问题。
http://www.microsoft.com/emea/itsshowtime/sessionh.aspx?vi http://forums.microsoft.com/china
http://forums.microsoft.com/china
deoid=346
感谢!
感谢!
吴慧锋
Wilson Wu
Email: iwilsonwu@gmail.com
MSN: il
MSN wilsonwu@ssw.com.au
@
QQ: 53286461
Blog: http://WilsonWu.cnblogs.com
Blog: http://WilsonWu.cnblogs.com
© 2002 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. 7