您还会注意到,这些字元集的值与STOKFONT程式最上头的「CharSet」值一致。在美国英语版Windows中,我们看到常备字体的字元集ID是0 (ANSI_CHARSET)和255(OEM_CHARSET)。希腊版Windows中的是161(GREEK_CHARSET),在俄语版中的是204(RUSSIAN_CHARSET),在日语版中是128(SHIFTJIS_CHARSET)。
在上面的代码中,DBCS代表双位元组字元集,用於远东版的Windows。其他版的Windows不支援DBCS字体,因此不能使用那些字元集ID。
CreateFont传回HFONT值-逻辑字体的代号。您可以使用SelectObject将此字体选进装置内容。实际上,您必须呼叫DeleteObject来删除您建立的所有逻辑字体。
大字体解决方案的其他部分是WM_INPUTLANGCHANGE讯息。一旦您使用桌面下端的突现式功能表来改变键盘布局,Windows都会向您的视窗讯息处理程式发送WM_INPUTLANGCHANGE讯息。wParam讯息参数是新键盘布局的字元集ID。
程式6-4所示的KEYVIEW2程式实作了键盘布局改变时改变字体的逻辑。