热门标签 | 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


推荐阅读
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 我有一个从C项目编译的.o文件,该文件引用了名为init_static_pool ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 深入理解 JMeter 定时器
    本文详细介绍了JMeter中定时器的功能和使用方法,探讨了其在性能测试中的重要性,并结合实际案例解释了如何合理配置定时器以模拟真实的用户行为。文章还涵盖了定时器的执行顺序及其与其他元件的相互作用。 ... [详细]
  • 烤鸭|本文_Spring之Bean的生命周期详解
    烤鸭|本文_Spring之Bean的生命周期详解 ... [详细]
  • JMeter接口关联与数据提取:正则表达式和JSON Extractor的使用
    在使用JMeter进行接口测试时,常常需要从前一个接口的响应中提取数据并应用于后续请求。本文将详细介绍如何利用正则表达式提取器(Regular Expression Extractor)和JSON Extractor来实现这一需求。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 今天发现Mysql的主从数据库没有同步先上Master库:mysqlshowprocesslist;查看下进程是否Sleep太多。发现很正常。showmaster ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • 本文介绍了如何在Linux系统中获取库源码,并在从源代码编译软件时收集所需的依赖项列表。 ... [详细]
  • 在MFC框架中,存在多个全局函数,用于在不同对象间获取信息或创建新对象。其中,`afxGetApp`函数尤为关键,它能够帮助开发者轻松获取当前应用程序的实例指针。本文将详细解析`afxGetApp`函数的内部机制及其在MFC应用程序中的具体应用场景,探讨其在提升代码可维护性和灵活性方面的优势。此外,还将介绍其他常用全局函数如`AfxWinInit()`和`AfxBeginThread()`的功能和使用方法,为开发者提供全面的参考。 ... [详细]
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社区 版权所有