看了很久也没有真正看懂这一节的内容,可能这一节的内容与我生活差距有点远。我连最基本的窗口还没怎么学呢,还考虑什么国际化的问题。倒是那几种字体(比如说等宽字体)在还不会算支付宽度之前还是很有用的。至少输出的时候会好看一些,也更像DOS时代那种排版:)
国际化的问题是说,在不同语言版本的WINDOWS操作系统中,一些字符不能很好的兼容,出现无法显示的情况。还有在一些通过输入法(比如说中文)进行输入的情形下,字符消息是没有办法取得正确的字符的。不仅如此,系统内定的几种字体在不同版本的windows操作系统中,显示得东东也是不同的。
不过,既然我不才,不会写这种国际化的软件,只要在中文版操作系统中不出问题这些东东以后再予理会好了。
字体设定
这里用到了一个函数,为了以后不同去翻书,还是当作笔记记录下来吧。
程序可以在CreateFont或者CreateFontIndirect函数呼叫中使用字体名称来指定字体。也可以将下面这些字体用GetStockObject函数改成句柄,选进设备内容句柄中。
GetStockObject标识符 |
字体名称 |
小字体文件 |
大字体文件 |
SYSTEM_FONT |
System |
VGASYS.FON |
8514SYS.FON |
SYSTEM_FIXED_FONT |
FixedSys |
VGAFIX.FON |
8514FIX.FON |
OEM_FIXED_FONT |
Terminal |
VGAOEM.FON |
8514OEM.FON |
int nHeight, // height of font
int nWidth, // average character width
int nEscapement, // angle of escapement
int nOrientation, // base-line orientation angle
int fnWeight, // font weight
DWORD fdwItalic, // italic attribute option
DWORD fdwUnderline, // underline attribute option
DWORD fdwStrikeOut, // strikeout attribute option
DWORD fdwCharSet, // 字符集ID
DWORD fdwOutputPrecision, // output precision
DWORD fdwClipPrecision, // clipping precision
DWORD fdwQuality, // output quality
DWORD fdwPitchAndFamily, // pitch and family
LPCTSTR lpszFace // typeface name
);
CreateFontIndirect函数用法如下(其实这一个参数中就包含了上面那个函数的所有内容)



使用这些函数之后就可以像使用画刷那样,选进设备内容句柄中实现功能了(同样在用完之后要删除)。
#define ANSI_CHARSET |
0 |
// 1252 Latin 1 (ANSI) |
#define DEFAULT_CHARSET |
1 | |
#define SYMBOL_CHARSET |
2 | |
#define MAC_CHARSET |
77 | |
#define SHIFTJIS_CHARSET |
128 |
// 932 (DBCS, 日本) |
#define HANGEUL_CHARSET |
129 |
// 949 (DBCS, 韩文) |
#define HANGUL_CHARSET |
129 |
// " " |
#define JOHAB_CHARSET |
130 |
// 1361 (DBCS, 韩文) |
#define GB2312_CHARSET |
134 |
// 936 (DBCS, 简体中文) |
#define CHINESEBIG5_CHARSET |
136 |
// 950 (DBCS, 繁体中文) |
#define GREEK_CHARSET |
161 |
// 1253希腊文 |
#define TURKISH_CHARSET |
162 |
// 1254 Latin 5 (土耳其文) |
#define VIETNAMESE_CHARSET |
163 |
// 1258越南文 |
#define HEBREW_CHARSET |
177 |
// 1255希伯来文 |
#define ARABIC_CHARSET |
178 |
// 1256阿拉伯文 |
#define BALTIC_CHARSET |
186 |
// 1257波罗的海字集 |
#define RUSSIAN_CHARSET |
204 |
// 1251俄文 (斯拉夫语系) |
#define THAI_CHARSET |
222 |
// 874泰文 |
#define EASTEUROPE_CHARSET |
238 |
// 1250 Latin 2 (中欧语系) |
#define OEM_CHARSET |
255 |
// 地区自订 |