MFC学习之程序执行过程梳理
*首先利用全局变量对象theApp启动应用程序。这是由于这个全局对象,基类CWinApp中this的指针才干指向这个对象。假设没有这个全局对象,程序在编译时不会出错,但在执行时就会出错.
*调用全局应用程序对象的构造函数,从而就会先调用其基类CWinApp的构造函数。后者完毕应用程序的一些初始化工作,并将应用程序对象的指针保存起来。
*进入WinMain函数。在AfxWinMain函数中能够获取子类(对Test程序来说就是CTestApp类)的指针,利用此指针调用虚函数:InitInstance,依据多态性原理,实际上调用的是子类(CTestApp)的InitInstance函数。后者完毕应用程序的一些初始化工作,包含窗体类的注冊,创建,窗体的显示和更新。期间会多次调用CreateEX函数,由于一个单文档MFC应用程序有多个窗体,包含框架窗体.工具条.状态条等。
*进入消息循环,尽管也设置了默认的窗体过程函数,可是,MFC应用程序实际上是採用消息映射机制来处理各种消息。当收到WM_QUIT消息时,退出消息循环,程序结束。
4类画线画图:
1.SDK全局函数实现画线功能.
2.CDC类实现画线功能.
3.CClientDC实现画线功能
4.CWindowDC实现画线功能.
GetParent()获取基类指针 视窗体的父窗体就是框架窗体.
利用SelectObject函数能够实现把GDI对象选入设备表,它才会在以后的绘制操作中生效。而且该函数会返回指向先前被选对象的指针。这主要是为了再完毕当前绘制操作后,还原设备描写叙述表用的。
静态成员函数:静态成员函数和静态成员变量属于类本身,在载入的时候,即为它们分配了空间,全部能够通过类名::函数名或类名:变量名来訪问。而非静态成员函数和非静态成员属于对于的方法和数据,也就是应该首先产生类的对象,然后通过类的对象去引用.
MFC学习之程序执行过程梳理的更多相关文章
- MFC程序执行过程剖析
一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...
- MFC程序执行过程剖析(转)
一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...
- Windows程序执行过程
Windows应用程序: WinMain函数(入口函数): 1. 设计窗体类,注冊窗体类.WNDCLASS 2. 创建窗体,显示及更新窗体. 3. 消息循环. 窗体过程函数(回调函数):WindowP ...
- Java程序执行过程及内存机制
本讲将介绍Java代码是如何一步步运行起来的,其中涉及的编译器,类加载器,字节码校验器,解释器和JIT编译器在整个过程中是发挥着怎样的作用.此外还会介绍Java程序所占用的内存是被如何管理的:堆.栈和 ...
- Android入门学习:Android 系统框架及应用程序执行过程
Android基础知识学习 新手上路,还请多多帮助.由于初学,博客内容难免有不正确的地方,还请各位多多指教,相互学习! 主要内容: 1.Android层次架构及主要功能 2.Android编程模型,程 ...
- Hadoop学习之Mapreduce执行过程详解
一.MapReduce执行过程 MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示: ...
- 通过DT10获取程序执行过程中的实时覆盖率
DT10是新一代的动态测试工具,可以长时间跟踪记录目标程序执行情况,获取目标程序动态执行数据,帮助进行难于重现的Bug错误分析,覆盖率检测,性能测试,变量跟踪等等功能. 系统测试覆盖率,通常是用于判断 ...
- php程序执行过程--非宏观和微观而是写的程序一行一行的路径----利用xdebug了解一段程序的执行过程----覆盖率
1.xdebug_start_code_coverage();//在需要开始跟踪程序执行路径时使用 2.var_dump(xdebug_get_code_coverage());//在结尾使用打印程序 ...
- 【JAVA】【基础知识】Java程序执行过程
1. Java程序制作过程 使用文本编辑器进行编辑 2. 编译源文件,生成class文件(字节码文件) javac源文件路径. 3.运行程序class文件.
随机推荐
- Mysql 分别按月, 日为组group,进行统计排序order
在数据库中我们经经常使用sql语句对表进行简单的统计排序,对于日期字段.我们能够简单的对其进行order. 对于复杂一点的能够按日期中的年.月,日分别进行group,order. 按年份进行group ...
- 虚拟机设备直通的两种方式(Working in Progress)
声明: 本博客欢迎转发.但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! pci passthroug ...
- android开发步步为营之65:解决ScrollView和ListView触摸事件onInterceptTouchEvent相互冲突问题
近期项目里面有个需求,一个页面放了一个ScrollView,整个页面能够向上滚动,然后ScrollView里面又嵌套了一个ListView,ListView里面的数据也是能够上下滑动的,理论上List ...
- java中的二进制
(1)按位与运算 & 1 & 1 = 1, 0 & 1 = 0 51 & 5 即 0011 0011 & 0000 0101 =0000 0001 = 1 ...
- .Net+EF连接Oracle 10、11 开发,ODAC安装配置与使用详解
Oracle数据访问组件 (ODAC) 全称:Oracle Data Access Components 优点:由于微软在.net framework4中会将System.Data.OracleCl ...
- jQuery 事件 - error() 方法
实例 如果图像不存在,则用一段预定义的文本取代它: $("img").error(function(){ $("img").replaceWith(" ...
- Struts2中的校验框架
Struts2提供的客户端校验 尽管这种支持比较弱,但采用Struts2中的客户端校验时需要注意以下几点 1..将<s:form validate="true">的va ...
- (原)编译caffe时提示未定义的引用(undefined reference to)
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5864715.html 参考网址: https://github.com/BVLC/caffe/issu ...
- zepto.1.1.6.js源码中的each方法学习笔记
each方法接受要遍历的对象和对应的回调函数作为参数,它的作用是: 1.如果要遍历的对象是类似数组的形式(以该对象的length属性值的类型是否为number类型来判断),那么就把以要遍历的对象为执行 ...
- linux vim 常用命令
一. VIM高亮 进入vim后,在普通模式下输入如下命令,开启php代码高亮显示 :syntax enable :source $VIMRUNTIME/syntax/php.vim二. VI常用命令_ ...