不明白为什么windows7 与 WINPE 3.0 的字符平均字符高度不一致

chhwanglt 2009-01-23 04:48:05
最近研究WINPE3.0。
发现相同的对话框(对话框的字体使用系统字体),在WINPE3.0 和 window7中显示的高度不一样。
在程序中追踪了一下系统字体和对话框字体的高度。
代码如下:
HGDIOBJ hFontOld;
TEXTMETRIC tm;
SIZE size;

HDC hdc = ::GetDC(this->GetSafeHwnd());

HGDIOBJ hFont = ::GetStockObject(SYSTEM_FONT);
hFontOld = SelectObject(hdc,hFont);
GetTextMetrics(hdc,&tm);
GetTextExtentPoint32(hdc,_T("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),52,&size);
double avgWidthS = (size.cx/26+1)/2;
double avgHeightS = (WORD)tm.tmHeight;


hFont = ::GetStockObject(DEFAULT_GUI_FONT);
SelectObject(hdc,hFont);
GetTextMetrics(hdc,&tm);
GetTextExtentPoint32(hdc,_T("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),52,&size);
double avgWidthD = (size.cx/26+1)/2;
double avgHeightD = (WORD)tm.tmHeight;

SelectObject(hdc, hFontOld);

::ReleaseDC(this->GetSafeHwnd(), hdc);

结果发现avgHeightD 在windows7 中是13,在WINPE3.0中是16。


希望高人能够指点一下。
...全文
291 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chhwanglt 2009-02-24
  • 打赏
  • 举报
回复
终于知道是什么原因了,还是跟字体有关系。
WinPE3.0 中缺少字体Microsoft Sans Serif。
liuzxchina 2009-02-05
  • 打赏
  • 举报
回复
在桌面属性-》外观-》高级中可以设置字体及其大小

不同版本的Windows,使用的字体可能是不同的, Vista中默认的雅黑,XP中没有。
chhwanglt 2009-02-05
  • 打赏
  • 举报
回复
怎样才能看出字体的区别亚?
菜牛 2009-02-01
  • 打赏
  • 举报
回复
字体不同
Un1 2009-01-24
  • 打赏
  • 举报
回复
不一样是正常的,就算操作系统相同,也可能由于用户的设置导致不一样的结果,所以一个好的程序应该更据现场情况做相应调整,而不是写死一些数值。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧