zoukankan      html  css  js  c++  java
  • MFC vs. SDK程序流程

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

    1)声明消息窗口类

    2)注册窗口类

    3)createwindows

    4)消息获得以及分派(windows procedure)。

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

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

    对于任何一个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)。

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

  • 相关阅读:
    CF899A Splitting in Teams
    CF898A Rounding
    CF914A Perfect Squares
    CF864A Fair Game
    CF909A Generate Login
    关于C++的一些函数的使用方法
    又是一个二模02,不过day2
    2模02day1题解
    二模Day2题解
    KMP算法心得
  • 原文地址:https://www.cnblogs.com/Dageking/p/4226030.html
Copyright © 2011-2022 走看看