设置 | 登录 | 注册

作者共发了23篇帖子。

【对比】Windows7系统下五种获取系统默认字体代码的效果

11楼 巨大八爪鱼 2016-5-24 15:44
[3]
ncm.cbSize = sizeof(NONCLIENTMETRICS);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, (UINT)NULL);
hfontCaption = (HFONT)GetStockObject(DEFAULT_GUI_FONT);

【说明】
ncm.cbSize = sizeof(NONCLIENTMETRICS); 这句话不兼容XP系统
必须减掉一个sizeof(int),SystemParametersInfo才能正常工作
12楼 巨大八爪鱼 2016-5-24 15:44
[4]
ncm.cbSize = sizeof(NONCLIENTMETRICS) - sizeof(int);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, (UINT)NULL);
hfontCaption = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
13楼 巨大八爪鱼 2016-5-24 15:45
[5]
ncm.cbSize = sizeof(NONCLIENTMETRICS) - sizeof(int);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, (UINT)NULL);
hfontCaption = CreateFontIndirect(&ncm.lfCaptionFont);
14楼 巨大八爪鱼 2016-5-24 15:47
[6]
ncm.cbSize = sizeof(NONCLIENTMETRICS) - sizeof(int);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, (UINT)NULL);
ncm.lfCaptionFont.lfWeight = FW_NORMAL; // 取消粗体属性
hfontCaption = CreateFontIndirect(&ncm.lfCaptionFont);
15楼 巨大八爪鱼 2016-5-24 15:57
16楼 巨大八爪鱼 2016-5-24 15:59
我觉得代码4的字体在两个系统下都很好。
代码6的字体在Win7下很常见(例如记事本的字体对话框就是用的这个字体),但XP中很不常见。
17楼 巨大八爪鱼 2016-5-24 16:03
XP系统下只读文本框的黑色背景块可以在消息处理函数的switch语句中添加如下代码解决:
case WM_CTLCOLORSTATIC: // 消除Static控件、滑块控件和只读文本框的背景颜色
        return (LRESULT)GetStockObject(WHITE_BRUSH);

效果:
18楼 巨大八爪鱼 2016-5-24 16:04
这幅截图的字体是用的代码4
19楼 巨大八爪鱼 2016-5-24 16:05
我记得,Win7中文版下设置IP地址的对话框上的字体就是用的代码4的字体
20楼 巨大八爪鱼 2016-5-24 16:23
Windows XP中文版下只有“楷体_GB2312”字体,没有“楷体”字体。
而Windows 7下只有“楷体”字体,没有“楷体_GB2312”字体。(我用的是英文版的系统,中文版不知道是不是这样)
所以上面的截图中XP系统下楷体字没有正常显示。
但是把字体名称改成“楷体_GB2312”后,XP下正常了,但Win7下却反而不正常了

内容转换:

回复帖子
内容:
用户名: 您目前是匿名发表。
验证码:
看不清?换一张
©2010-2025 Purasbar Ver3.0 [手机版] [桌面版]
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。