热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

孙鑫VC++讲座笔记第三讲:深入解析MFC应用程序架构,附带SDI程序流程图分析

在《孙鑫VC++讲座笔记第三讲》中,深入探讨了MFC应用程序的架构,并详细解析了SDI程序的流程图。AfxWinMain()函数位于WINMAIN.CPP文件中,其主要职责包括调用AfxWinInit()进行框架初始化,以及通过pApp->InitApplication()执行应用内部的初始化过程。此外,还详细分析了各个关键函数的作用及其在程序启动过程中的具体功能。

//AfxWinMain()函数在WINMAIN.CPP文件中,它主要调用以下函数

AfxWinInit();

pApp->InitApplication();    //内部初始化管理

pThread->InitInstance();    //调用子类中的InitInstance()

CTestApp::InitInstance();

┣━ProcessShellCommand(cmdInfo);        //对命令行进行解释

┃        CTestDoc::CTestDoc();        //构造文档类对象

┃        CMainFrame::CMainFrame();    //构造框架窗口对象

┃            CFrameWnd::LoadFrame();    //WINFRM.CPP

┃            ┣━AfxEndDeferRegisterClass();    //WINCORE.CPP,注册窗口类

┃            ┃        AfxRegisterClass();    //WINCORE.CPP

┃            ┣━CMainFrame::PreCreateWindow();

┃            ┃        CFrameWnd::PreCreateWindow();

┃            ┃            AfxEndDeferRegisterClass();

┃            ┣━AfxRegisterClass();

┃            ┗━CFrameWnd::Create();        //创建CMainFrame窗口

┃                    CWnd::CreateEx();

┃                        CMainFrame::PreCreateWindow();

┃                            CFrameWnd::PreCreateWindow();

┃                        CTestView::CTestView();    //构造CTestView对象

┃                        CWnd::CreateEx();        //创建CTestView窗口

┃                            AfxEndDeferRegisterClass();

┃                        AfxEndDeferRegisterClass();

┃                        CWnd::CreateEx();        //创建CToolBar工具栏

┃                        AfxEndDeferRegisterClass();

┃                        CWnd::CreateEx();        //创建CStatusBar状态栏

┃                        AfxEndDeferRegisterClass();

┃                            AfxRegisterClass();

┃                        CWnd::CreateEx();        //创建CDockBar

┃                        AfxEndDeferRegisterClass();

┃                        CWnd::CreateEx();        //创建CDockBar

┃                        AfxEndDeferRegisterClass();

┃                        CWnd::CreateEx();        //创建CDockBar

┃                        AfxEndDeferRegisterClass();

┃                        CWnd::CreateEx();        //创建CDockBar

┣━m_pMainWnd->ShowWindow(SW_SHOW);    //显示窗口

┗━m_pMainWnd->UpdateWindow();        //更新窗口

nReturnCode = pThread->Run();    //进入消息循环

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lining_hi/archive/2006/07/28/989465.aspx


推荐阅读
  • 如何在Windows 10中设置自动清空回收站功能?
    在Windows 10中,如何设置自动清空回收站的功能?许多用户近期提出了这一疑问。为了确保系统运行顺畅,定期清理回收站中的文件是必要的。本文将详细介绍如何通过任务计划程序等方法,实现回收站的自动清空,帮助用户有效管理磁盘空间。 ... [详细]
  • GDB 使用心得与技巧总结
    在使用 GDB 进行调试时,可以采用以下技巧提升效率:1. 通过设置 `set print pretty on` 来美化打印输出,使数据结构更加易读;2. 掌握常见数据结构的打印方法,如链表、树等;3. 利用 `info locals` 命令查看当前作用域内的所有局部变量;4. 在需要进行类型强制转换时,正确使用语法,例如 `p (Test::A *) pObj`。这些技巧能够显著提高调试的便捷性和准确性。 ... [详细]
  • 在进行网络编程时,准确获取本地主机的IP地址是一项基本但重要的任务。Winsock作为20世纪90年代初由Microsoft与多家公司共同制定的Windows平台网络编程接口,为开发者提供了一套高效且易用的工具。通过Winsock,开发者可以轻松实现网络通信功能,并准确获取本地主机的IP地址,从而确保应用程序在网络环境中的稳定运行。此外,了解Winsock的工作原理及其API函数的使用方法,有助于提高开发效率和代码质量。 ... [详细]
  • 结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
    结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ... [详细]
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 本文深入解析了计算机科学领域中常用的几种排序算法,包括冒泡排序、插入排序、选择排序和希尔排序。通过对这些算法的性能进行详细对比分析,探讨了它们在不同数据规模和分布情况下的优劣。研究结果表明,冒泡排序虽然实现简单,但在大多数情况下效率较低;插入排序在部分有序的数据集中表现较好;选择排序的时间复杂度较为稳定,但空间复杂度较高;而希尔排序通过引入增量序列显著提高了排序效率,适用于大规模数据集。 ... [详细]
  • 我正在使用 Ruby on Rails 构建个人网站。总体而言,RoR 是一个非常出色的工具,它提供了丰富的功能和灵活性,使得创建自定义页面变得既高效又便捷。通过利用其强大的框架和模块化设计,我可以轻松实现复杂的功能,同时保持代码的整洁和可维护性。此外,Rails 的社区支持也非常强大,为开发过程中遇到的问题提供了丰富的资源和解决方案。 ... [详细]
  • 本文介绍了Android动画的基本概念及其主要类型。Android动画主要包括三种形式:视图动画(也称为补间动画或Tween动画),主要通过改变视图的属性来实现动态效果;帧动画,通过顺序播放一系列预定义的图像来模拟动画效果;以及属性动画,通过对对象的属性进行平滑过渡来创建更加复杂的动画效果。每种类型的动画都有其独特的应用场景和实现方式,开发者可以根据具体需求选择合适的动画类型。 ... [详细]
  •  DRV8825步进电机驱动控制器与双轴稳定平台的集成应用
    本研究基于TI公司的DRV8825步进电机驱动芯片,将其与现有的双轴稳定平台集成,开发出一种具备自动测量功能的新型平台。该平台通过精确控制步进电机,实现了高精度的定位和测量,适用于多种精密测量和自动化应用场景。关键词:DRV8825,步进电机,双轴稳定平台,自动测量,精密控制 ... [详细]
  • Python网络爬虫入门:利用urllib库进行数据抓取
    Python网络爬虫入门:利用urllib库进行数据抓取在数据科学和Web开发领域,Python凭借其简洁高效的特性成为首选语言。本文主要介绍了如何在Windows环境下使用Python的urllib库进行基本的网络数据抓取。考虑到命令行操作的不便,作者选择了Jupyter Notebook作为开发环境,不仅简化了配置过程,还提供了直观的数据处理和可视化功能。通过实例演示,读者可以轻松掌握urllib的基本用法,为深入学习网络爬虫技术打下坚实基础。 ... [详细]
  • ESP32 IRAM 内存优化策略与实践总结
    本文总结了针对ESP32 IRAM内存溢出问题的优化策略与实践经验。通过详细分析ESP32的内存结构和IRAM分配机制,提出了一系列有效的解决方案,包括代码优化、内存管理技巧和编译器配置调整,旨在帮助开发者有效解决`.espressif/tools/xtensa-esp32-elf/esp-2`等类似错误,提升系统性能和稳定性。 ... [详细]
  • 如何利用Git实现高效的多人协作开发(远程仓库应用实例)——Ares Zhao
    Git作为一种分布式版本控制系统,每位开发者都是本地仓库的管理者。然而,为了实现团队间的高效协作,需要将本地的开发成果推送至远程共享仓库,以便其他成员能够同步更新。本文将以GitHub为例,详细介绍如何通过设置和使用远程仓库,实现多人协作开发的最佳实践。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • SQLmap自动化注入工具命令详解(第28-29天 实战演练)
    SQL注入工具如SQLMap等在网络安全测试中广泛应用。SQLMap是一款开源的自动化SQL注入工具,支持12种不同的数据库,具体支持的数据库类型可在其插件目录中查看。作为当前最强大的注入工具之一,SQLMap在实际应用中具有极高的效率和准确性。 ... [详细]
author-avatar
在这里啊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有