MFC标准SDI程序启动详解
需积分: 9 34 浏览量
更新于2024-09-19
收藏 43KB DOC 举报
"这篇内容是关于MFC框架下标准单文档界面(SDI)程序的启动过程的总结,主要涉及CWinApp、CSingleDocTemplate、CMyApp、CMyDoc、CMainFrame、CMyView等类的交互以及命令处理流程。"
在MFC(Microsoft Foundation Classes)库中,开发SDI程序时,程序启动过程遵循一系列规范步骤,以下是详细的解释:
1. **程序加载**:当SDI程序启动时,操作系统(Windows)会传递一个包含特定命令的命令行参数,如`FileNew`,表明用户希望打开一个新的文档。
2. **创建全局对象**:首先,系统创建全局对象`theApp`,它的类型是自定义的CMyApp类,该类继承自CWinApp。CWinApp是MFC中用于管理应用程序生命周期的核心类。
3. **进入WinMain函数**:这是所有Windows应用程序的入口点,C++程序中的WinMain函数将开始处理操作系统传递的参数。
4. **初始化应用实例**:在WinMain中,通过`theApp`指针调用CWinApp的`InitInstance`虚函数。由于CMyApp继承了CWinApp,因此实际上执行的是CMyApp的`InitInstance`,在此过程中可以进行一些自定义的初始化操作。
5. **创建文档模板**:在`InitInstance`中,创建一个CSingleDocTemplate实例,它包含了文档类(如CMyDoc)、框架窗口类(如CMainFrame)和视图类(如CMyView)的信息。然后,将这个模板对象添加到CWinApp的文档模板链表中,以便后续的文档管理。
6. **处理命令行参数**:接着,程序解析传入的命令行参数,创建一个CCommandLineInfo对象`cmdInfo`,并调用`CWinApp::ProcessShellCommand(cmdInfo)`来处理这些参数。
7. **响应文件新建命令**:在`ProcessShellCommand`函数内部,根据`cmdInfo`的`m_nShellCommand`成员(这里是`FileNew`),决定执行`OnFileNew`函数。这里利用了MFC的消息映射机制,如果命令没有被其他地方处理,则默认执行`OnFileNew`。
8. **创建新文档**:`CWinApp::OnFileNew`调用`m_pDocManager`(CDocManager类型的成员)的`OnFileNew`函数,`m_pDocManager`负责管理应用程序的文档模板列表,是文档和视图之间的桥梁。
9. **创建具体文档**:在`CDocManager::OnFileNew`中,根据之前创建的文档模板,实际创建一个新的文档实例,并可能伴随着框架窗口和视图的创建。至此,用户可以看到一个新的空白文档界面准备就绪。
整个过程展示了MFC如何处理SDI应用程序的启动、命令处理和文档视图架构的建立。每个步骤都是MFC框架为了简化Windows应用程序开发而设计的标准化流程,使得开发者可以专注于业务逻辑,而不必过多关注底层的Windows API调用。
2018-11-15 上传
2012-07-20 上传
2022-09-24 上传
2020-08-19 上传
2014-05-30 上传
2012-12-24 上传
2015-03-05 上传
2013-12-29 上传
2008-11-07 上传
sinotw
- 粉丝: 0
- 资源: 2
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章