1. 文档字符串的定义:
1) 也是LoadFrame可以加载的第四种资源(图标、菜单、加速键之外的第四种资源);
2) 定义方式例如:
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
IDR_MAINFRAME "SdiSquares\n\nSdiSqu\nSdiSqu Files (*.sqr)\n.sqr\nSdiSquares.Document\nSdiSqu Document"
END
i. 定义使用关键字STRINGTABLE;
ii. 里面的那条字符串都要用一条资源ID来标识,就像菜单的菜单项一样,每一项都要用一个ID来标识;
3) 其中的字符串是由换行符\n相互隔开的7个子字符串构成,如果哪一个字符串为空也必须用两个\n(中间什么字符都没有)包夹在一起,标识中间的字符串为空;
4) 7个字符串的含义(从头到尾):
*1. 框架窗口标题栏中的标题,一般用来指示应用程序名,例如:Microsoft Word,中间可以带空格
*2. 分配给未命名的新创建文档的名字,如果该字符串为空将默认为"Untitled"
!!在创建或打开一个文档后程序标题栏会显示"文档名-程序名",程序名就是第一个子字符串,文档名可以是已存在的文档的名称也可以是默认的Untitled(即第2个子字符串);
*3. MDI文档类型过滤器,在SDI中用不到,可以为空;
*4. SDI文档类型过滤器,会在CFileDialog的文档过滤器列表中显示,例如:Doc Files(*.doc);
!!!5和6会在注册表中注册时起到作用,后面会具体讲解注册表的相关内容;
*5. 文档的默认扩展名(在用户没输入后缀的情况下自动添加),例如:.txt就是合法的,注意,一定要加.
*6. 注册表文档类型:也成为注册表ID;
!!!
*7. 文档类型描述:文档的属性选项卡中会显示出来的供人阅读的名字,可以比较长,可以包含空格,主要作用是简短地解释文档的类型,在注册表中是注册表ID对应的描述性字符串;
2. 使用GetDocString来获取文档字符串的各个子字符串:
1) 函数原型:vritual BOOL CDocTemplate::GetDocString(CString& rString, enum DocStringIndex index) const;
2) rString用于接受想获得的字符串;
3) index使用枚举类型定义的索引值,它们都已CDocTemplate::作为前缀,这里按照子字符串的排列顺序给出:
windowTitle:标题
docName:默认的文档名
fileNewName:MDI文档类型过滤器
filterName:SDI文档类型过滤器
filterExt&#