(szBuffer, TEXT ("%c"), 16 * x + y)) ; }
EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }
这个程式相当简单。它使用卷动列和游标移动键让您选择显示七种备用字体之一。该程式在一个网格中显示一种字体的256个字元。顶部的标题和网格的左侧显示字元代码的十六进位值。
在显示区域的顶部,STOKFONT用GetStockObject函式显示用於选择字体的识别字。它还显示由GetTextFace函式得到的字体样式名称和TEXTMETRIC结构的tmCharSet栏位。这个「字元集识别字」对理解Windows如何处理外语版本的Windows是非常重要的。
如果在美国英语版本的Windows中执行STOKFONT,那么您看到的第一个画面将显示使用OEM_FIXED_FONT识别字呼叫GetStockObject函式得到的字体。如图6-3所示。

| 图6-3
美国版Windows中的OEM_FIXED_FONT |
在本字元集中(与本章其他部分一样),您将看到一些ASCII。但请记住ASCII是7位元代码,它定义了从代码0x20到0x7E的可显示字元。到IBM开发出IBM
PC原型机时,8位元位元组代码已被稳固地建立起来,因此可使用全8位元代码作为字元代码。IBM决定使用一系列由线和方块组成的字元、带重音字母、希腊字母、数学符号和一些其他字元来扩展ASCII字元集。许多文字模式的MS-DOS程式在其萤幕显示中都使用绘图字元,并且许多MS-DOS程式都在档案中使用了一些扩展字元。
这个特殊的字元集给Windows最初的开发者带来了一个问题。一方面,因为Windows有完整的图形程式设计语言,所以线和方块字元在Windows中不需要。因此,这些字元使用的48个代码最好用於许多西欧语言所需要的附带重音字母。另一方面,IBM字元集定义了一个无法完全忽略的 |