MFC vs. SDK程序流程

你们都知道,windows API编程以及其消息处理,其过程都清晰可见,大致步骤以下:编程

1)声明消息窗口类windows

2)注册窗口类app

3)createwindows函数

4)消息得到以及分派(windows procedure)。.net

可是,对于MFC一样是Windows程序,其流程却显得灰暗不明。先具体分析(备录)以下:对象

在MFC中有两个重要的类,CWinApp,CFrameWnd,它们两个的存在在某种意义上来讲代替了WinMain 和 WinProc的存在。blog

对于任何一个MFC程序,都存在一个Application Object(theApp),因为它是一个全局对象,所以是一个程序的入口点,当TheApp构造完了之后,由连接器将WinMain加入到应用程序中,它调用了AfxWinMain()函数。以后在AfxWinMain中,执行了AfxWinInit(),pApp->InitApplication(),pApp->InitInstance(), pApp->Run();AfxWinTerm();完成程序的整个过程。内存

关于 InitInstance: 首先,它会new一个CFrameWnd成员,其构造函数调用了Create();create()里面调用了createEx(),CreateEx()调用了PreCreateWindows();这里面MFC默认注册了5种类型的窗口类型(Wnd,controlbar, mdiframe, FrameOrView, OleControl)。
消息过程的流程:主要是调用AfxWndProc-〉AfxCallWndProc-> Wnd.WindowProc().这里实际上是程序真正的处理过程,首先判断是否为WM_COMMAND消息;不是就按照一般的方法,进行处理(查找消息映射表,由宏创建起来的内存表),是就按照MFC规定的路线进行处理。CWnd::OnCommand()调用的是OnCmdMsg(),这里MFC规定了其消息的路线(view ,document,framewnd,winapp)。get

 

转自:http://blog.csdn.net/ingor/article/details/2085736iframe

相关文章
相关标签/搜索