MFC笔记(四)

本文详细介绍了MFC中的线程管理和消息处理机制,包括SDK开发流程、MFC程序框架、消息映射、线程创建、线程同步与通信。重点讲解了用户界面线程与工作者线程的区别,以及如何使用`AfxBeginThread`创建线程。同时,文章还阐述了线程间通信的方法,如布尔变量、消息发送和同步对象(如CEvent、CMutex和CSemaphore)的使用。
摘要由CSDN通过智能技术生成

Vs中c++应用程序开发:

1、SDK中的流程

开发一个带界面的SDK程序大致流程是这样的.首先自然是要有个main函数做入口点.然后按下面的步骤来(为了讨论方便,只说大概流程,代码也是不完整的)

int_tWinain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, intnCmdShow)

{

  MSG msg;

   InitApplicatio(HINSTANCE hInstance)  //1,注册窗体类,并在这里指定了窗体过程WndProc

   InitInstance(HINSTANCEhInstance, int nCmdShow)   //2,创建窗体

while(GetMessage(&msg, NULL, 0, 0))    //3步消息循环,分派消息

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return(int) msg.wParam;  //4,退出程序

}

BOOL InitApplicatio(HINSTANCEhInstance)

{

  returnRegisterClass(...);

}

BOOL InitInstance(HINSTANCEhInstance, int nCmdShow)

{

CreateWindow(...);//创建窗体

ShowWindow(...);//显示窗体

UpdateWindow(...);//送出WM_PAINT

returnTRUE;

}

LRESULTCALLBACK WndProc(...){} //窗口函数

 

2MFC开发

MFC中有main函数,但是由系统去调用.然后main函数里面执行的操作差不多,只不过它是通过CWinAppCWinThread的指针去调用一些相关的函数.

 

AfxWinInit函数:创建当前应用程序主线程

InitApplication函数:初始化CWINAPP类的一些内部东西,对编程人员来说无意义

InitInstance函数内部通过Create()函数来完成窗口的注册,创建更新和显示。

Run函数:内部就是真正的消息循环机制了(TraslateMessageDisPatchMessage)。

 

在一个windows程序中,winmain函数作为程序的入口函数,一个程序的是:设计窗口(给窗口设置相应的属性)——>注册窗口——>创建窗口——>显示并且更新窗口——>消息循环

但是当创建一个MFC程序时候,并没有看到winmain函数之类的东西,并且之前的程序框架与MFC也大有不同。现在,先来看看MFC中的程序框架以及程序运行机制吧。

由于MFC是对其SDK的封装,所以程序运行逻辑方式应该是一样的。

     MFC程序中,同样还是有winmain函数参与,但是这个WinMain函数是在程序编译连接时,由链接器将该函数链接到程序的。知道WinMain的存在后,那么WinMain又是怎么跟其他类组织在一起的呢?

1CxxxApp中,有一个theApp对象的全局对象,该对象就表示了应用程序本身。     对于全局对象theApp,它是在程序进入WinMain函数之前为其分配的空间,同时,定义其时候会调用它的构造函数。在程序中看到CxxxAppCWinApp的子类,当调用CxxxApp的构造函数之前,会调用其父类的构造函数。程序的初始化在CWinApp构造函数完成。

2AfxWinMain函数:WinMain函数实际上是通过调用AfxWinMain函数来完成其功能的。AfxWinMain源代码在MFC源代码的WINMAIN.CPP文件中。AfxWinMain

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值