目前共有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 Arslanbar [手机版] [桌面版]
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。