CDocument 类
提供用户定义文档类的基本功能。
| 称 | 描述 |
|---|---|
| CDocument::OnFileSendMail | 发送附加了文档的邮件。 |
| CDocument::OnUpdateFileSendMail | 如果存在邮件支持,则启用"发送邮件"命令。 |
CView 类
提供用户定义视图类的基本功能。
| 名称 | 描述 |
|---|---|
| CView::DoPreparePrinting | 显示"打印"对话框并创建打印机设备上下文;当重写 OnPreparePrinting 成员函数时调用。 |
| CView::GetDocument | 返回与视图关联的文档。 |
| CView::IsSelected | 测试是否选择了文档项。 OLE 支持所必需的。 |
| CView::OnDragEnter | 当首次将项拖入视图的拖放区域内时调用。 |
| CView::OnDragLeave | 当拖动的项离开视图的拖放区域时调用。 |
| CView::OnDragOver | 当将项拖动到视图的拖放区域上时调用。 |
| CView::OnDragScroll | 调用以确定是否将光标拖入窗口的滚动区域内。 |
| CView::OnDrop | 当项已被拖入视图的拖放区域(默认处理程序)时调用。 |
| CView::OnDropEx | 当项已被拖入视图的拖放区域(主处理程序)时调用。 |
| CView::OnInitialUpdate | 在首次将视图附加到文档之后调用。 |
| CView::OnPrepareDC | 在为屏幕显示调用 OnDraw 成员函数之前或在为打印或打印预览调用 OnPrint 成员函数之前调用。 |
| CView::OnScroll | 当将 OLE 项拖动到视图边框之外时调用。 |
| CView::OnScrollBy | 当滚动包含就地激活状态的 OLE 项的视图时调用。 |
| 名称 | 描述 |
|---|---|
| CView::OnActivateFrame | 当包含该视图的框架窗口被激活或停用时调用。 |
| CView::OnActivateView | 当激活视图时调用。 |
| CView::OnBeginPrinting | 当打印作业开始时调用;重写以分配图形设备接口 (GDI) 资源。 |
| CView::OnDraw | 为屏幕显示、打印或打印预览调用以呈现文档的图像。 需要实现。 |
| CView::OnEndPrinting | 当打印作业结束时调用;重写以解除分配 GDI 资源。 |
| CView::OnEndPrintPreview | 当退出预览模式时调用。 |
| CView::OnPreparePrinting | 在打印或预览文档之前调用;重写以初始化"打印"对话框。 |
| CView::OnPrint | 调用以打印或预览文档的某个页面。 |
| CView::OnUpdate | 调用以通知已修改其文档的视图。 |
除 CScrollView 外,Microsoft 基础类库还提供派生自 CView 的九个其他类:
-
CCtrlView,允许使用文档的视图 - 包含树、列表和丰富的编辑控件的视图体系结构。
-
CDaoRecordView,在对话框控件中显示数据库记录的视图。
-
CEditView,提供简单的多行文本编辑器的视图。 可以将
CEditView对象用作对话框中的控件以及文档上的视图。 -
CFormView,包含对话框控件且基于对话框模板资源的可滚动视图。
-
CListView,允许使用文档的视图 - 包含列表控件的视图体系结构。
-
CRecordView,在对话框控件中显示数据库记录的视图。
-
CRichEditView,允许使用文档的视图 - 包含丰富的编辑控件的视图体系结构。
-
CScrollView,自动提供滚动支持的视图。
-
CTreeView,允许使用文档的视图 - 包含树控件的视图体系结构。
CFrameWnd 类
提供 Windows 单文档界面 (SDI) 重叠式或弹出框架窗口功能,并提供管理窗口的成员。
| 名称 | 描述 |
|---|---|
| CFrameWnd::OnCreateClient | 为框架创建客户端窗口。 |
| CFrameWnd::OnHideMenuBar | 在当前 MFC 应用程序中的菜单隐藏之前调用。 |
| CFrameWnd::OnShowMenuBar | 在当前 MFC 应用程序中的菜单显示之前调用。 |
CDocTemplate 类
定义文档模板基本功能的抽象基类。
| 名称 | 描述 |
|---|---|
| CDocTemplate::AddDocument | 将文档添加到模板。 |
| CDocTemplate::CloseAllDocuments | 关闭与此模板关联的所有文档。 |
| CDocTemplate::CreateNewDocument | 创建新文档。 |
| CDocTemplate::CreateNewFrame | 创建包含文档和视图的新框架窗口。 |
| CDocTemplate::CreateOleFrame | 创建已启用 OLE 的框架窗口。 |
| CDocTemplate::CreatePreviewFrame | 创建用于丰富预览的子框架。 |
| CDocTemplate::GetDocString | 检索与文档类型关联的字符串。 |
| CDocTemplate::GetFirstDocPosition | 检索与此模板关联的第一个文档的位置。 |
| CDocTemplate::GetNextDoc | 检索文档和下一个文档的位置。 |
| CDocTemplate::InitialUpdateFrame | 初始化框架窗口,并(可选)使其可见。 |
| CDocTemplate::LoadTemplate | 加载给定 CDocTemplate 或派生类的资源。 |
| CDocTemplate::MatchDocType | 确定文档类型与此模板之间匹配的置信度。 |
| CDocTemplate::OpenDocumentFile | 打开路径名指定的文件。 |
| CDocTemplate::RemoveDocument | 从模板中删除文档。 |
| CDocTemplate::SaveAllModified | 保存与此模板关联的所有文档,这些文档已被修改。 |
| CDocTemplate::SetContainerInfo | 在编辑就地 OLE 项时确定 OLE 容器的资源。 |
| CDocTemplate::SetDefaultTitle | 在文档窗口的标题栏中显示默认标题。 |
| CDocTemplate::SetPreviewInfo | 设置进程外预览控件。 |
| CDocTemplate::SetServerInfo | 确定在就地嵌入或编辑服务器文档时的资源和类。 |
CWinAPP类
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------|
| CWinApp::EnableShellOpen | 支持用户通过 Windows 文件管理器打开数据文件。 |
| CWinApp::LoadStdProfileSettings | 加载标准 .INI 文件设置并启用 MRU 文件列表功能。 |
| CWinApp::OnContextHelp | 处理应用程序中的 Shift+F1 帮助。 |
| CWinApp::OnFileNew | 实现 ID_FILE_NEW 命令。 |
| CWinApp::OnFileOpen | 实现 ID_FILE_OPEN 命令。 |
| CWinApp::OnFilePrintSetup | 实现 ID_FILE_PRINT_SETUP 命令。 |
| CWinApp::OnHelp | 处理应用程序中的 F1 帮助(使用当前上下文)。 |
| CWinApp::OnHelpFinder | 处理 ID_HELP_FINDER 和 ID_DEFAULT_HELP 命令。 |
| CWinApp::OnHelpIndex | 处理 ID_HELP_INDEX 命令,并提供默认帮助主题。 |
| CWinApp::OnHelpUsing | 处理 ID_HELP_USING 命令。 |
| CWinApp::RegisterShellFileTypes | 将应用程序的所有文档类型注册到 Windows 文件管理器。 |
| CWinApp::SetAppID | 显式设置应用程序的应用程序用户模型 ID。 应在向用户显示任何用户界面之前调用此方法(最佳位置是应用程序构造函数)。 |
| CWinApp::SetRegistryKey | 导致应用程序设置存储在注册表中,而不是 .INI 文件中。 |
| CWinApp::UnregisterShellFileTypes | 取消应用程序的所有文档类型到 Windows 文件管理器的注册。 |
文档视图的相互作用
virtual BOOL CWinApp::InitInstance();
创建1个或多个文档模板
cpp
BOOL CSketcherApp::InitInstance()
{
CWinApp::InitInstance();
EnableTaskbarInteraction(FALSE);
// 使用 RichEdit 控件需要 AfxInitRichEdit2()
// AfxInitRichEdit2();
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
LoadStdProfileSettings(4); // 加载标准 INI 文件选项(包括 MRU)
// 注册应用程序的文档模板。 文档模板
// 将用作文档、框架窗口和视图之间的连接
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_SketcherTYPE,
RUNTIME_CLASS(CSketcherDoc),
RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
RUNTIME_CLASS(CSketcherView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
// 创建主 MDI 框架窗口
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
{
delete pMainFrame;
return FALSE;
}
m_pMainWnd = pMainFrame;
// 仅当具有后缀时才调用 DragAcceptFiles
// 在 MDI 应用程序中,这应在设置 m_pMainWnd 之后立即发生
// 启用拖/放
m_pMainWnd->DragAcceptFiles();
// 分析标准 shell 命令、DDE、打开文件操作的命令行
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// 启用"DDE 执行"
EnableShellOpen();
RegisterShellFileTypes(TRUE);
// 调度在命令行中指定的命令。 如果
// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// 主窗口已初始化,因此显示它并对其进行更新
pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow();
return TRUE;
}
CDocument* CView::GetDocument() const;
调用此函数以获取指向视图文档的指针。
virtual void CView::OnUpdate( CView* pSender, LPARAM lHint, CObject* pHint);
在修改视图的文档之后由框架调用;此函数由 CDocument::UpdateAllViews 调用,并允许视图更新其显示以反映这些修改。
它还由 OnInitialUpdate 的默认实现调用。 默认实现使整个工作区失效,在收到下一条 WM_PAINT 消息时将其标记为绘制。 如果要仅更新映射到文档修改部分的区域,请重写此函数。 为此,必须使用提示参数传递有关修改的信息。
virtual void CView::OnInitialUpdate();
在视图首次附加到文档之后但在最初显示视图之前,由框架调用。
此函数的默认实现调用不带提示信息的 OnUpdate 成员函数(即,对于 lHint 参数,使用默认值 0,对于 pHint 参数,使用 NULL)。 重写此函数以执行任何需要文档信息的一次性初始化。