首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为什么通过SelectObject()更换系统字体后,一样的数字代表的字符就不一样了呢?解决思路

2012-06-11 
为什么通过SelectObject()更换系统字体后,一样的数字代表的字符就不一样了呢?例如我用先这样设置字体:Sele

为什么通过SelectObject()更换系统字体后,一样的数字代表的字符就不一样了呢?
例如我用先这样设置字体:
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT)) ;
然后在这样设置字体:
SelectObject(hdc,GetStockObject(OEM_FIXED_FONT)) ;
在这两种字体下0x01、0x02、0x03等等代表的字符就不一样,这是怎么一回事啊?
跪求大师指点迷津,呜呜~~~

[解决办法]
SYSTEM_FIXED_FONT 
Fixed-pitch (monospace) system font. This stock object is provided only for compatibility with 16-bit Windows versions earlier than 3.0.

OEM_FIXED_FONT 
Original equipment manufacturer (OEM) dependent fixed-pitch (monospace) font.

简单的来说:
OEM_FIXED_FONT 字体的0x00-0x1f为一些扩充的符号,如三角等
SYSTEM_FIXED_FONT 字体的0x00-0x1f并不是可显字符(0x80-0x9f也有一些不可显字符)
所以0x01,0x02,0x03显示不一样

具体可看下<<windows程序设计>>的键盘那一章
http://see.xidian.edu.cn/cpp/html/1262.html
 

热点排行