看了很久也没有真正看懂这一节的内容,可能这一节的内容与我生活差距有点远。我连最基本的窗口还没怎么学呢,还考虑什么国际化的问题。倒是那几种字体(比如说等宽字体)在还不会算支付宽度之前还是很有用的。至少输出的时候会好看一些,也更像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函数用法如下(其实这一个参数中就包含了上面那个函数的所有内容)
CONST LOGFONT * lplf // characteristics
);
使用这些函数之后就可以像使用画刷那样,选进设备内容句柄中实现功能了(同样在用完之后要删除)。
#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 | // 地区自订 |