InitInstance函数

VC++MFC程序中的WinMain函数(五)InitInstance函数 目录 前言: 4.InitInstance函数(Test.h) InitInstance函数(Test.cpp) 主 SDI 框架窗口: 前言: pThread和pApp调用了三个函数(如下),这三个函数就完成了 Win32程序所需要的几个步骤:设计窗口类、注册窗口类、创建窗口、显示窗口、更新窗口、消息循环,以及窗口过程函数。 if (pApp != NULL && !pApp->InitApplication()) if (!pThread->Ini 阅读详情

BOOL InitInstance()为什么说它是程序的进入点?还有,那个WinMain函数又有什么作用,这两个函数之间有什么关系吗?

BOOL InitInstance()是MFC的CWinApp类的成员函数,而WinMain才是真正的入口点,但是MFC不允许程序中有WinMain这个函数,因为MFC自己编写了WinMain函数,如果程序中再定义就重复定义了,而MFC编写的的WinMain函数则调用了CWinApp::InitInstance函数,所以InitInstance看起来似乎就是MFC程序的入口点。

 

InitInstance是虚函数,继承类必须提供它的实现代码。完成整个消息链的启动。

 

在CWinApp这个类中除了有一般类都有的构造函数,一个重要的成员函数就是InitInstance,我们知道,在WINDOWS环境下面可以运行同一程序的多个实例,函数InitInstance的作用就是在生成的一个新的实例的时候,完成一些初始化的工作。

 

Windows允许在同一时刻运行程序的几份拷贝。在概念上,应用程序的初始化可以被分为两个部分:一次性的应用程序初始化工作,这些在应用程序第一次运行时完成,以及实例的初始化工作,每次运行程序的一个拷贝时都会执行这些操作,包括第一次运行时。框架中WinMain实现调用这个函数。重载InitInstance以初始化在Windows下运行的应用程序的每个新实例。

通常,重载InitInstance以构造主窗口对象并设置CWinThread::m_pMainWnd数据成员,使其指向这个窗口。

 

InitApplication和InitInstance现在成为MFC的CWinApp的两个虚函数,前者负责“每一个程序只做一次”的操作,后者负责“每一个例程都得做一次”的操作。 “每一个程序”指的是进程的概念。“每一个例程”指的是线程的概念。所以InitApplication负责“每一个程序只做一次”的操作。而InitInstance是每一个线程都具有的函数,只不过很多情况下,你自己开的线程没有重载该函数。

 

其实在基于CWinApp的程序中InitApplication和InitInstance都只执行一次。InitApplication是MFC的较老的入口函数,现在一般不重载InitApplication而直接重载InitInstance。  
   

 

不过如果使用CWinThread或者AfxBeginThread创建线程,新的线程会执行新建CWinThread对象的InitInsatnce函数一次。不过这和CWinApp没有关系。

别再找main函数了!MFC程序真正的入口点 InitInstance() 保姆级解析 本文深入解析MFC程序中真正的入口点InitInstance(),对比传统WinMain函数与MFC面向对象框架的差异。通过详细代码示例和调试技巧,帮助开发者理解CWinApp类如何管理程序生命周期,提升MFC编程效率。适合需要掌握MFC框架核心机制的C++开发者阅读。 阅读详情

相关推荐

数据分析面试八股文--技能软件类

数据分析的“三板斧"指的是三个在 Python 数据分析领域广泛使用的库:NumPy,Pandas,和 Matplotlib。这三个库提供了处理和分析数据的强大工具。NumPyNumPy(Numerical Python)是一个开源 Python 库,用于支持大型多维数组和矩阵运算。此外,NumPy 还提供了大量的数学函数来操作这些数组。np.array():创建数组np.arange():返回一个有终点和起点的固定步长的排列。

zfyzfw的博客 4377

C++ MFC MDI应用程序启动时主窗口默认最大话

1 新建MDI应用程序, 2 修改CApp的成员函数BOOL CMDI02165App::InitInstance()里面的pMainFrame->ShowWindow(SW_SHOWMAXIMIZED); BOOL CMDI02165App::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。 否.

dxm809的博客 418

Aras Innovator生命周期图实战:从配置到权限管理的全流程解析

本文详细解析了Aras Innovator生命周期图的全流程配置与权限管理,从基础概念到实战应用,涵盖状态设置、路径配置、权限控制等核心功能。通过实际案例和代码示例,帮助用户掌握如何高效管理数据生命周期,提升业务流程的规范性和效率。

ee345的博客 168

MFC重要的初始化函数InitInstance

在应用程序启动时,系统会自动创建这个应用程序类的一个实例,并在这个实例的构造函数中执行一系列的初始化操作,包括初始化应用程序的状态、注册窗口类、加载资源等。在上面的示例中,CMyApp::InitInstance函数创建了应用程序的主窗口,并将其设置为应用程序的主窗口。在MFC应用程序中,通常会派生一个应用程序类,例如CMyApp,并重写InitInstance函数来执行应用程序特定的初始化操作。InitInstance函数是MFC应用程序框架中的一个虚拟函数,用于执行应用程序的实例化和初始化操作。

最后一个bug的博客 962

海康安防平台接口调试指南:从签名生成到Vue项目集成

本文详细解析了海康安防平台接口认证规则,从签名生成到Vue项目集成的完整流程。通过核心机制解析、签名工具使用技巧及Vue项目中的优雅集成方案,帮助开发者高效完成接口调试,避免常见问题。特别适合需要将海康安防平台接口集成到Vue项目中的开发者参考。

weixin_42533120的博客 438

yolov5 FPGA实现及verilog代码仿真

本文介绍了一种基于FPGA的卷积神经网络加速器设计,采用混合架构实现网络功能。该系统将训练和图像预处理等复杂计算保留在PC端执行,仅将主干网络部署在FPGA上。由于片上资源限制,建议通过外接DDR存储扩展容量。文章提供了完整的Verilog HDL源码,包括卷积单元(convUnit)、卷积层(convLayerSingle)和处理单元(processingElement)等核心模块,均已通过仿真验证。该设计采用流水线结构,使用浮点运算单元实现卷积计算,支持32x32图像输入和5x5卷积核处理。系统架构图中

QQ_778132974的博客 576

CWinApp中的InitInstance()

initInstance是WinMain调用的第一个函数,用于创立程序。InitInstance基本上只创建程序窗口。这个函数的代码本可直接插入到WinMain中,但将它们放到单独的函数中会更方便(这与多实例的处理有关,因为一个程序可能会多次运行)。注意,InitInstance不是一个像WinMain那样的基本Windows函数,而只是一个“助手”函数。实例句柄是一个程序中使用的全局变量,用于保

DepaJun的专栏 9928

openharmony之启动恢复子系统详解

需求: 添加一个名为my_service的自定义服务步骤1: 创建服务配置],],"env": [步骤2: 添加到主配置],"jobs": ["cmds": [步骤3: 验证配置# ✅ 检查配置格式 jq . /system/etc/init/my_service.cfg # 🔄 重新加载配置 begetctl reload # 📊 验证服务状态 begetctl dump_service my_serviceOpenHarmony init进程的完整生命周期。🔄 三阶段启动模型⚙️ 配置体系。

m0_67505153的博客 601

C++之MFC六大关键技术

MFC六大关键技术包括: MFC Initialization —— MFC程序的初始化过程 RTTI(Runtime Type Information)—— 运行时类型识别 Dynamic Creation —— 动态创建 Persistence ——永久保存(串行化、序列化) Message Mapping —— 消息映射 Message Routing —— 消息传递 MFC程...

CG-SpatialAI 626

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.5 RTC设备编写与实现

4. Linux kernel RTC子系统goldfish_rtc driver分析。电脑,会需要时间,还比如 我们的手机、平板,都需要时间;驱动基本就是应用层需要什么数据你给什么数据就行,基本必须实现的就是。3.2 Linux kernel RTC 设备描述符讲解。中看到他的具体实现,也可以根据他的寄存器描述直接在。5. 将驱动添加进kernel和测试RTC驱动。系统来说,时间是一个非常重要的功能;之类的函数接口,接下来我们就开始讲解如何写。,所以我们直接移植设备树即可。,他的寄存器很简单,你可以从。

DSMGUOGUO的博客 568

【纯实战】C#基于TCP/IP实现三菱PLC MC协议完整通信(含完整源码+通信原理+避坑指南)

MC协议是三菱电机为旗下MELSEC系列PLC量身定制的以太网专用通信协议,本质是一套基于TCP/IP的应用层协议规范,专门用于实现上位机(PC/工控机)与PLC之间的双向数据交互,支持对PLC的软元件(X/Y/M/D/W/T/C等)进行读、写、批量读写等核心操作,同时支持PLC状态查询、程序启停等控制指令。重要:三菱PLC的MC协议默认基于TCP 4999端口通信,部分新版本FX5U/Q系列也支持TCP 5000端口,核心通信逻辑一致。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 894

MFC中的InitInstance()函数应该怎样理解

https://zhidao.baidu.com/question/29097884.html

流风回雪的博客 2975

SAP 系统里生成 PDF 的几条主干路径:从 Spool 转换到 Adobe 原生渲染,再到 BTP 云服务

本文系统梳理了SAP生态中PDF生成的多种技术方案,包括Spool转换、OTF转换、Smart Forms/Adobe Forms原生生成以及云端服务等不同路径。文章通过实际案例和代码示例,详细分析了各方案的适用场景、技术要点和工程实践建议,特别强调了多语言支持、字体处理、性能优化等关键因素。针对不同业务需求,提供了从简单导出到复杂交互式PDF的完整解决方案框架,为SAP环境下的PDF处理提供了实用指南。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 287

MFC InitInstance函数

BOOL InitInstance()为什么说它是程序的进入点?还有,那个WinMain函数又有什么作用,这两个函数之间有什么关系吗? BOOL InitInstance()是MFC的CWinApp类的成员函数,而WinMain才是真正的入口点,但是MFC不允许程序中有WinMain这个函数,因为MFC自己编写了WinMain函数,如果程序中再定义就重复定义了,而MFC编写的的WinMain函数

一璐有你的专栏 3220

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC InitInstance函数

VC InitInstance函数 BOOL InitInstance()为什么说它是程序的进入点?还有,那个WinMain函数又有什么作用,这两个函数之间有什么关系吗? BOOL InitInstance()是MFC的CWinApp类的成员函数,而WinMain才是真正的入口点,但是MFC不允许程序中有WinMain这个函数,因为MFC自己编写了WinMain函数,如果程序中再定义就重复

《好好先生》专栏 1691

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC++ 之 InitInstance()函数

基类 CWinApp::InitInstance() 函数原型 virtual BOOL InitInstance(); 返回值   如果初始化成功,则返回非零值;否则返回0。 注释   Windows允许在同一时刻运行程序的几份拷贝。在概念上,应用程序的初始化可以被分为两个部分:一次性的应用程序初始化工作,这些在应用程序第一次运行时完成,以及实例的初始化工作,每次运行程序的一个拷贝

1611

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

关于InitInstance虚函数

今天学习MS编程时无意看到了虚函数的概念,研究一会儿才看懂 虚函数,是在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。 ...

qq_33416600的博客 431

InitInstance()函数

BOOL InitInstance()为什么说它是程序的进入点?还有,那个WinMain函数又有什么作用,这两个函数之间有什么关系吗? BOOL InitInstance()是MFC的CWinApp类的成员函数,而WinMain才是真正的入口点,但是MFC不允许程序中有WinMain这个函数,因为MFC自己编写了WinMain函数,如果程序中再定义就重复定义了,而MFC编写的的WinMain

haoyishe的专栏 1031

Visual Studio 2022的MFC框架——AfxWinMain全局对象和InitInstance函数

Visual Studio 2022的MFC框架——AfxWinMain全局对象和InitInstance函数

荔园微风的博客 1489

(转)对各种初始化函数的理解:OnInitDialog、InitInstance、InitApplication函数的理解...

  InitInstance和InitApplication是APP类的初始化。而OnInitDialog是在Dialog类初始化时调用的函数。   ★应用程序相关配置,一般在InitInstance()调用。InitInstance()是初始化实例,是WinThread的线程初始化函数,完成WinApp线程初始化。   ★基于对话框的应用程序中,由于主窗体就是一个Dialo...

weixin_30950887的博客 509

VC++文档/视类结构 InitInstance函数 帮助对话框类

CWinApp类的定义(afxwin.h*): class CWinApp : public CWinThread { DECLARE_DYNAMIC(CWinApp) public: // Constructor explicit CWinApp(LPCTSTR lpszAppName = NULL); // app name defaults to EXE name // Attributes // Startup args (do not change) // This mo

当路danglu0010 872

Windows窗口程序-InitInstance函数

// Perform application initialization: BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd;//返回创建的窗口的句柄 hInst = hInstance; // Store instance handle in our global variable//保存命令行参数中的hInsta...

weixin_37603532的博客 1464
上一篇: 讲讲简单的电源隔离和信号地,电源地的处理
下一篇: GDI绘图中的资源释放
wtbcx2012
博客等级 码龄14年 26粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值