|
。如果转换了资源描述档中的文字,那么建立程式的另一种语言版本所需做的一切就是重新连结程式。这种方法比重新组织原始码安全得多(然而,除了下一个范例程式,我在本书的其他程式中不使用字串表,原因是字串表使程式码看起来更为模糊和复杂)。
您可以在「 Insert 」功能表中选择「 Resource 」,再选择「 String
Table 」,建立一个字串表。字串会显示在萤幕右边的列表中。通过双击字串就可以选中它。针对每个字串,您可以指定识别字和字串的内容。
在资源描述中,字串显示在一个多行的叙述中,如下所示:
STRINGTABLE DISCARDABLE BEGIN IDS_STRING1, "character string 1" IDS_STRING2, "character string 2" 其他字串定义 END
如果您在替早期版本的Windows写程式,并在文字编辑器中手动建立这个字串表(用Developer
Studio来做这件事当然更容易得多了),您可以用左右大括弧代替BEGIN和END叙述。
资源描述可以包含多个字串表,但是每个ID必须唯一表示一个字串。每个字串占一行,最多4097个字元。\t可以作为跳位字元,\n则作为linefeed字元号。DrawText和MessageBox函式能够识别这些控制符号。
您的程式可以使用LoadString呼叫把字串复制到程式资料段的缓冲区中:
LoadString (hInstance, id, szBuffer, iMaxLength) ;
参数id是ID,它加在资源描述档中每个字串的前面;szBuffer是指向接收字串的字元阵列的指标;iMaxLength是送入szBuffer中的最大字元数。函式传回字串中的字元数。
每个字串前面的ID一般是定义在表头档案中的巨集识别字。许多Windows程式写作者使用字首IDS_
来表示字串的ID。有时,档案名称或其他资讯需要在字串显示时插入到字串中。在这种情况下,您可以将C的格式化字元放入字串,并把它用於wsprintf中作为一个格式化字串。
所有资源文字-包括字串表中的文字-以Unicode格式储存在.RES编译资源档案以及最终的.EXE档案中。LoadStringW函式直接载入Unicode文字。LoadStrin |