InitInstance函数

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

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

 

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

 

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

 

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

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

 

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

 

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

 

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

收获: 1. 通过学习epoll模型、pipe管道和HTTPS连接的基础知识,我对网络编程和安全通信有了更深入的了解,这将有助于我在开发中处理网络连接和数据传输的问题。 2. 通过学习MFC编程中的InitInstance函数、PreCreateWindow函数和OnCreate函数等,我对MFC框架的初始化过程和窗口创建流程有了更清晰的认识,这将有助于我编写更高效和可靠的MFC应用程序。 3. 通过学习MFC编程中的基础控件,如静态文本、编辑框、下拉框及列表控件,我掌握了创建和使用这些控件的方法,可以更灵活地设计和开发用户界面。 4. 优化统一接入调试客户端V1.0.1.5的窗口,增加账号ID下拉框,使用户可以更方便地选择账号ID,提升了客户端的易用性和用户体验。 存在的不足和差距: 1. 在epoll模型、pipe管道和HTTPS连接方面的知识上,可能需要进一步深入学习和实践,以应对更复杂的网络通信场景,并提升自己在这些领域的专业能力。 2. 在MFC编程中的高级函数和控件使用方面,可能还有一些不熟悉的地方,需要进一步学习和积累经验,以更好地应对实际开发需求。 3. 统一接入调试客户端的窗口优化可能还有其他可改进的地方,比如界面布局、交互设计等,需要进一步提升自己的设计能力和用户体验意识。 改进计划: 1. 深入学习和实践网络编程和安全通信方面的知识,掌握更多的技术和工具,提高自己在这方面的能力。 2. 持续学习和研究MFC编程中的高级函数和控件使用,阅读相关文档和示例代码,加深理解并应用于实际项目中。 3. 改进统一接入调试客户端的窗口,除增加账号ID下拉框外,进一步优化界面布局、交互设计等,提升用户体验。 4. 不断积累经验,参与更多的实际项目开发,通过实践不断提升自己的技术水平和解决问题的能力。 通过以上改进计划,我相信自己能够不断提高,填补存在的不足和差距,并在工作中更好地应用所学知识,提升自己的职业发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值