前提:在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. 完美融合 nextjs 和 antd

    相信大家在使用nextjs的时候,难免遇到一些坑.其实可能大部分原因在于 nextjs 做了很多封装,我们可能不能第一时间搞清楚包括它相关的所有配置,比如其中的webpack配置.我前面也写过 SSR ...

  2. PowerDesigner执行脚本 name/comment/stereotype互转

    执行方法:工具栏->Tools -> Execute Commands -> Edit/Run Script (Ctrl+Shift+X) 如下图所示: 1.Name转到Commen ...

  3. 【文文殿下】【洛谷】分治NTT模板

    题解 可以计算每一项对后面几项的贡献,然后考虑后面每一项,发现这是一个卷积,直接暴力NTT就行了,发现它是一个有后效性的,我们选择使用CDQ分治. Tips:不能像通常CDQ分治一样直接 每次递归两边 ...

  4. MariaDB 使用正则匹配查询(7)

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...

  5. DZY Loves Math(莫比乌斯反演)

    \(x=p_1^{\alpha_1}p_2^{\alpha_2}...p_c^{\alpha_c}\) \(f(x)=\max(\alpha_1,\alpha_2,...,\alpha_c)\) \( ...

  6. 13_python_内置函数

  7. Java并发编程总结5——ThreadPoolExecutor

    一.ThreadPoolExecutor介绍 在jdk1.8中,构造函数有4个.以 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, ...

  8. underscore.js源码研究(5)

    概述 很早就想研究underscore源码了,虽然underscore.js这个库有些过时了,但是我还是想学习一下库的架构,函数式编程以及常用方法的编写这些方面的内容,又恰好没什么其它要研究的了,所以 ...

  9. 值不能为 null。 参数名: source

    今天调试程序总是报一个异常: 值不能为 null.参数名: source 异常详细信息: System.ArgumentNullException: 值不能为 null.参数名: source 通过断 ...

  10. Cookies与session的区别

    Cookies 机制 Cookies是服务器在本地机器上存储的一段文本,并随每一个请求发送至同一个服务器. IETF RFC2965 HTTP State Management Mechanism 是 ...