MFC复习(一)

大家都知道,windows API编程以及其消息处理,其过程都清晰可见,大体步骤如下:
1)声明消息窗口类
2)注册窗口类
3)createwindows
4)消息获得以及分派(windows procedure)。

但是,对于MFC同样是Windows程序,其流程却显得灰暗不明。现具体分析如下:
在MFC中有两个重要的类,CWinApp,CFrameWnd,它们两个的存在在某种意义上来说代替了WinMain 和 WinProc的存在。
对于任何一个MFC程序,都存在一个Application Object(theApp),由于它是一个全局对象,因此是一个程序的入口点,
当TheApp构造完了以后,由链接器将WinMain加入到应用程序中,它调用了AfxWinMain()函数。(在CExampleApp theApp;这一步,只要按F11一直跟下去就会到crtexe.c中的mainret = WinMain...,这里继续F11就会到appmodul.cpp中的return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);了)
之后在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)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值