KEYVIEW1在显示区域上部画了一个标题以确定分成九行。此列文字带有底线。虽然可以建立一种带底线的字体,但这里使用了另一种方法。我定义了两个字串变数szTop(有文字)和szUnd(有底线),并在WM_PAINT讯息处理期间将它们同时显示在视窗顶部的同一位置。通常,Windows以一种「不透明」的方式显示文字,也就是说显示字元时Windows将擦除字元背景区。这将导致第二个字串(szUnd)擦除掉前一个(szTop)。要防止这一现象的发生,可将装置内容切换到「透明」模式:
这种加底线的方法只有在使用等宽字体时才可行。否则,底线字元将无法与显现在底线上面的字元等宽。
外语键盘问题
如果您执行美国英语版本的Windows,那么您可安装不同的键盘布局,并输入外语。可以在 控制台 的 键盘 中安装外语键盘布局。选择 语系 页面标签,按下 新增 键。要查看死键的工作方式,您可能想安装「德语」键盘。此外,我还要讨论「俄语」和「希腊语」的键盘布局,因此您也可安装这些键盘布局。如果在「键盘」显示的列表中找不到「俄语」和「希腊语」的键盘布局,则需要安装多语系支援:从「控制台」中选择 新增/删除 程式,然後选择 Windows安装程式 页面标签,确认选中 多语系支援 核取方块。在任何情况下,这些变更都需要原始的Windows光碟。
安装完其他键盘布局後,您将在工作列右侧的通知区看到一个带有两个字母代码的蓝色框。如果内定的是英语,那么这两个字母是「EN」。单击此图示,将得到所有已安装键盘布局的列表。从中单击需要的键盘布局即可更改目前活动程式的键盘。此改变只影响目前活动的程式。
现在开始进行实验。不使用UNICODE识别字定义来编译KEYVIEW1程式(在本书附带的光碟中,非Unicode版本的KEYVIEW1程式位於RELEASE子目录)。在美国英语版本的Windows下执行该程式,并输入字元『abcde』。 WM_CHAR讯息与您所期望的一样:ASCII字元代码0x61、0x62、0x63、0x6