2017.06.30—Visio Studio下MFC c++的入口程序(main函数)

2024-01-04 20:48

本文主要是介绍2017.06.30—Visio Studio下MFC c++的入口程序(main函数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是自己总结的各个大神理解,感觉对自己有用的部分,就记下来了。

1.MFC 库已经封装了许多基础函数,在 InitInstance 函数中设置一个断点, F5运行停下来的时候,看调用堆栈, 就知道调用的层次了, 双击进去也可以看到源码;

2.MFC已经封装了,你这个有一个App实例,它的InitInstance就是你代码可以开始执行的入口
3. http://blog.csdn.net/gencheng/article/details/12676021      MFC框架中消失的WinMain()
4.http://blog.csdn.net/weiwenhp/article/details/8455471博客;
5.根据自己的理解,MFC c++下的main函数是WinMain,但是
// Advanced initialization: for overriding default WinMain
BOOL AFXAPI AfxWinInit(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
    _In_z_ LPTSTR lpCmdLine, _In_ int nCmdShow);
6.总结起来可以这样简单的说,MFC中有main函数,但是由系统去调用.然后main函数里面执行的操作差不多,只不过它是通过CWinApp和CWinThread的指针去调用一些相关的函数.而指针嘛由于调用了虚函数,所以用到了面向对象中的多态,于是转来转去的.然后最难的地方可能就是消息机制在这里更复杂一点了.不能简单的与SDK中做一对一的对比.
7.一般是BOOL XXXXApp::InitInstance()这里开始的;
8.mainCRTStartup等入口函数是编译器插入到程序中的crt初始化和清理函数,初始化的一个重要任务就是初始化crt堆,在此之前不能使用crt的分配内存函数。但这句并没有问题。每个进程启动时,系统会为它分配一个默认堆,API函数GetProcessHeap就是取得这个默认堆,而API函数HeapAlloc是从堆中分配内存。
posvi = (OSVERSIONINFOA *)HeapAlloc(GetProcessHeap(), 0, sizeof(OSVERSIONINFOA));
9.简单说:
(1)MFC用AfxWinMain代替了原来C编程中的WinMain();
(2)AfxWinMain()是MFC已经帮你写好了,并由Windows系统调用,不用你写了;
(3)在AfxWinMain()被执行之前,需要有了一个CWinApp类全局对象,由你自己建立;
(4)而CWinApp类是CWinThread类的派生类,而且当前的CWinApp类全局对象(这个对象有且只能有一个),然后Windows系统启动你的程序,调用AfxWinMain(),AfxWinMain()中通过调用全局函数AfxGetApp()来得到指向你建立的CWinApp对象的指针(MFC先编好的AfxWinMain()函数可以调用你自己后来建立的对象,这是C++的特性)。
这样MFC程序先建立应用程序对象,然后将内部准备好的WinMain()与之连接,执行一系列动作,从而使程序运行。
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
是消息映射,与WinMain无关,这两句是将ID_FILE_NEW和ID_FILE_OPEN两个句柄与创建新文件和打开文件函数关联。
10.

这篇关于2017.06.30—Visio Studio下MFC c++的入口程序(main函数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/570552

相关文章

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O