mc东北妞妞个人资料:Virtual C++ 中Resources视图的string table作用是什么啊?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 15:41:47
Virtual C++ 中Resources视图的string table作用是什么啊?
书上说可以用string table 中的IDR_MAINFRAME控制工程的各种资源,但是对IDR_MAINFRAME只是一个带有caption的字符长量,它到底是怎么 工作的呢?
不解,求教高手

非常感谢
The IDR_MAINFRAME ID, in addition to specifying the application's strings, identifies the application's icon, toolbar resources, and menu. AppWizard generates these resources, and you can maintain them with the resource editors.

这就是让我不解的那段话

大家回答之前读一读,也可能是我理解错了

你理解错了。
给你翻译一下:
IDR_MAINFRAME 这个标识符 不仅用来指定应用程序的字符串,还标识了应用程序的图标、工具条资源和菜单。应用程序向导 生成了这些资源,而你可以用资源编辑器对它们进行修改维护操作。
---------------------
就是说 应用程序向导 生成了 以 IDR_MAINFRAME 命名的资源,各个种类都有(书上还漏写了 快捷键 资源)
---------------------
String Table 是字符串表。 其中是这个程序所要显示的那些文本。包括在状态条里显示的、消息框显示的…… 在程序中只是加载它们。这样使以后修改起来比较方便。

简单地说,string table是将某个ID与某个字符串联系起来。
在编写多语言版本的程序时,就可以利用这个功能。
比如,你在编写程序的英文版时,可以将字符串“Open file Error!"与ID_ERROR_OPENFILE联系起来,编写中文版时,可以将“打开文件错误!”也与ID_ERROR_OPENFILE联系起来,那么在程序中就可以统一使用
CString message;
message.LoadString(ID_ERROR_OPENFILE);
AfxMessageBox(message);
而不用管你加载的中文的还是英文的资源库。

Virtual C++ 中Resources视图的string table是软件发展的国际化和本地化的产物。

因为随着国际化的发展,计算机软件往往需要提供各种地区版本,例如:简体中文版、繁体中文版。

而这些不同版本最大的区别就是程序中的字符串,如果把字符串散落在源程序中,就来修改起来非常麻烦。

现在的做法是集中存储在Resources视图的string table中,这样的话,只要为不同版本集中修改string table中的字符串,大大提高了效率,也降低了误把源程序修改坏的可能。

"书上说可以用string table 中的IDR_MAINFRAME控制工程的各种资源"
没听这种说法啊,看名字"string table"就知道了,是用来定义字符串的,跟#define 类似,方便管理程序.