前提:在InitInstance() 函数的初始化过程中,我们可以看到代码

CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CHelloDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CHelloView));
AddDocTemplate(pDocTemplate);

这段代码完成一项十分重要的工作:文档模板的设置。根据用户在AppWizard的第一步中的选择,首先定
义了一个单文档模板对象,然后通过这个单文档模板将应用程序的资源(由标识符IDR_MAINFRAME确定)、
文档类 CHelloDoc、主框架窗口类 CMainFrame 和视图类 CHelloView 联系在一起,最后通过调用
AddDocTemplate()函数将这一单文档模板对象加入到应用程序维护的文档模板列表中。

CSingleDocTemplate(
   UINT nIDResource,
   CRuntimeClass* pDocClass,
   CRuntimeClass* pFrameClass,
   CRuntimeClass* pViewClass
);

参数说明:
nIDResource指定文档类型使用的资源ID。它可能包括菜单,图标,加速键和字符串资源。
字符串资源最多可以包含七个由‘\n’字符分割的子串(如果有一个子串没有被包括,则需要‘\n’字符作为一个占位符;尾部的‘\n’字符不是必须的);这些子串描述了文档的类型。有关子串的信息,参见CDocTemplate::GetDocString。这个字符串资源可以在应用程序的资源文件中找到。例如:
// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
IDR_MAINFRAME "MyCalc Windows Application\nSheet\nWorksheet\n
Worksheets (*.myc)\n.myc\nMyCalcSheet\n MyCalc Worksheet"
END
你可以使用字符串编辑器来编辑这个字符串;在字符串编辑器中整个字符串是作为一个单一的项显示的,而不是作为七个分离的项。
有关这些资源类型的更多信息,参见子串编辑器(在“Visual C++用户指南”中被描述)。
pDocClass指向一个文档类的CRuntimeClass对象。这个类是一个CDocument派生类,是你定义来代表你的文档的。
pFrameClass指向框架窗口类的CRuntimeClass对象。这个类可以是一个CFrameWnd派生类,或者如果你想要你的主框架窗口具有缺省的行为,它可以是一个CFrameWnd自身。
pViewClass指向一个视类的CRuntimeClass对象。这个类是一个CView派生类,是你定义来显示你的文档的。




说明:

此成员函数用来构造一个CSingleDocTemplate对象。动态分配一个CSingleDocTemplate对象,并将它从你的应用程序类的InitInstance成员函数传递给CWinApp::AddDocTemplate。




示例:

BOOL CMyApp::InitInstance()
{
// ...
// 建立应用程序支持的文档类
AddDocTemplate( new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS( CSheetDoc ) ),
RUNTIME_CLASS( CFrameWnd ),
RUNTIME_CLASS( CSheetView )
);
// 此方法和本文开头第一种方法类似
}

 

MFC函数—CSingleDocTemplate的更多相关文章

  1. MFC函数之BitBlt

    MFC函数之BitBlt // Cgame123View 绘制 void Cgame123View::OnDraw(CDC* pDC) { Cgame123Doc* pDoc = GetDocumen ...

  2. 破解 Rith's CrackMe #1(对比IDA查看动态分析中的MFC函数名)

    系统 : Windows xp 程序 : Rith's CrackMe #1 程序下载地址 :http://pan.baidu.com/s/1gecW9Qr 要求 : 注册机编写 使用工具 : IDA ...

  3. MFC函数—SetRegistryKey

    前言:在用mfc框架编写应用的时候,如果注意,你会发现在App应用类的InitInstance()函数中,初始化时总有一个 SetRegistryKey("String");  这 ...

  4. MFC函数—— CWnd::PreCreateWindow

     CWnd::PreCreateWindow virtual BOOL PreCreateWindow( CREATESTRUCT& cs ); 返回值: 如果要继续窗口的创建过程,则返回非零 ...

  5. 常见MFC函数

    1.MFC常用函数:WinExec()ExitWindowsEx()GlobalMemoryStatus()GetSystemInfo()GetSystemDirectory()GetWindowsD ...

  6. MFC函数—CWinApp::LoadStdProfileSettings

    从 InitInstance 成员函数内调用该函数,启用和加载最近使用的(MRU)文件和最后浏览状态的列表.void LoadStdProfileSettings(   UINT nMaxMRU = ...

  7. MFC函数—— CFrameWnd::OnCreateClient

    CFrameWnd::OnCreateClient virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext*pContext); ...

  8. MFC函数——CWnd::OnEraseBkgnd

    CWnd::OnEraseBkgnd afx_msg BOOL OnEraseBkgnd( CDC* pDC ); 返回值: 如果它擦除了背景,则返回非零值:否则返回0. 参数: pDC 指定了设备环 ...

  9. MFC函数——CWnd::OnCreate

    CWnd::OnCreate afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct ); 返回值: OnCreate必须返回0以继续CWnd对象的创建 ...

随机推荐

  1. Excel VBA语句集

    Excel VBA语句集 引子 最近批阅学生成绩,用Excel 处理学生成绩,用到VBA 提高办公效率.需要经常查阅VBA的一些用法 正文 定制模块行为 (1) Option Explicit '强制 ...

  2. [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素

    一.问题描述 今天在MSDN论坛中看到这样的一个问题,觉得非常锻炼思维能力,所以这里记录下来作为备份,题目的要求是这样的: 假设有一组字符串数组{"0","0" ...

  3. ServiceStack NetCoreAppSettings 配置文件读取和设置

    假设Node和npm已经安装 npm install -g @servicestack/cli 执行命令dotnet-new selfhost SSHost 这样就创建了ServiceStack的控制 ...

  4. WPF学习笔记(5):两个DataGrid的滚动条实现同步滚动

    效果:两个DataGrid的滚动条实现同步滚动. 代码参考了博客园chuncn的文章<.net中同步多个ScrollViewer滚动的四种方法>,原文是针对ListBox的.现改为针对Da ...

  5. linux03

    linux day31.正则表达式 \* ------重复0无数次 \+ ------重复1 无数次 ^ -------开头 $ -------结尾 | ------或 & ----- 与 ( ...

  6. SpringCloud实现集群和负载均衡

    Spring cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的. 组成部分 spingcloud的五大神兽 服务发现——Netflix Eureka ...

  7. 【文文殿下】 [USACO08MAR]土地征用 题解

    题解 斜率优化裸题. 有个很玄学的事情,就是我用\(f[i]=min\{f[j-1]+p[j].y*p[i].x\}\) 会很奇怪的Wa . 明明和\(f[i]=min\{f[j]+p[j+1].y* ...

  8. webApp开发中的总结

    meta标签:  H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-wid ...

  9. Shell - 简明Shell入门13 - 用户输入(UserInput)

    示例脚本及注释 1 - arguments #!/bin/bash if [ -n "$1" ];then # 验证参数是否传入 echo "The first para ...

  10. job任务执行流程与分区机制

    job任务执行流程    1.run job阶段        ①收集整个job的环境信息(比如通过conf设定的参数,还有mapperClass,reducerClass,以及输出kv类型)     ...