ient / cyChar - 1 - i) * cyChar, szBuffer, wsprintf ( szBuffer, szFormat [iType], szMessage [pmsg[i].message - WM_KEYFIRST], pmsg[i].wParam, (PTSTR) (iType TEXT (" ") : szKeyName), (TCHAR) (iType pmsg[i].wParam : ' '), LOWORD (pmsg[i].lParam), HIWORD (pmsg[i].lParam) & 0xFF, 0x01000000 & pmsg[i].lParam szYes : szNo, 0x20000000 & pmsg[i].lParam szYes : szNo, 0x40000000 & pmsg[i].lParam szDown : szUp, 0x80000000 & pmsg[i].lParam szUp : szDown)); } DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT))) ; EndPaint (hwnd, &ps) ; return 0 ;
case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }
注意,键盘输入语言改变後,KEYVIEW2就清除画面并重新分配储存空间。这样做有两个原因:第一,因为KEYVIEW2并不是某种字体专用的,当输入语言改变时字体文字的大小也会改变。程式需要根据新字元大小重新计算某些变数。第二,在接收每个字元讯息时,KEYVIEW2并不有效地保留字元集ID。因此,如果键盘输入语言改变了,而且KEYVIEW2需要重画显示区域时,所有的字元将用新字体显示。
第十七章将详细讨论字体和字元集。如果您想深入研究国际化问题,可以在/Platform SDK/Windows Base
Services/International Features找到需要的文件,还有许多基础资讯则位 |