VC深入浅出学习笔记(一)
来源:互联网 发布:网络推广图片 编辑:程序博客网 时间:2024/05/21 13:55
第三课
剖析MFC对window窗口程序的封装,
创建一个单文档TEST 程序,生成5个类。
CMainFrame ,CTESTAPP,CTESTDOC,CTESTVIEW.CAboutDIg
过程:
原来的过程:声明窗口类对象,设计窗口类,注册窗口类,创建窗口,更新窗口,显示窗口。消息循环。
现在的过程:① 进入main
APP类生成一个全局对象,调用构造函数,CTESTapp()(空)
CTESTAPP 继承CWndAPPex, 继承CWndAPP,于是调用CWndAPP::CWndAPP();
进入_tWinMain(wincore .cpp)
extern "C" int WINAPI_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,_In_ LPTSTR lpCmdLine, int nCmdShow)#pragma warning(suppress: 4985){// call shared/exported WinMainreturn AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);}
AfxWinMain 中调用!pThread->InitInstance() ,pThread 是在之前的构造中获得的this指针,指向CtestAPP,InitInstance() 在基类中是虚函数,由多态性,执行CTestAPP类的InitInstance() 函数
②设计并 注册窗口类 :调用AfxEndDeferRegisterClass(wincore.cpp),其中有一些窗口类,可以选择。
③创建窗口: 调用CMainFrame的PreCreateWindow,由于继承,先调用BOOL CFrameWnd::PreCreateWindow(CREATESTRUCT& cs),
BOOL CFrameWnd::PreCreateWindow(CREATESTRUCT& cs){if (cs.lpszClass == NULL){VERIFY(AfxDeferRegisterClass(AFX_WNDFRAMEORVIEW_REG));cs.lpszClass = _afxWndFrameOrView; // COLOR_WINDOW background}
AfxDeferRegisterClass是一个宏定义,#define AfxDeferRegisterClass(fClass) AfxEndDeferRegisterClass(fClass) ,验证是否已经注册。
④显示和更新窗口:在CTESTAPP的InitInstance()函数 最后部分。
⑤消息循环: 在AfxWinMain里有一句 nReturnCode = pThread->Run();这里的Run方法是消息处理。视频里说,用的是一种消息映射的方式。
总结,MFC通过封装,是程序容易编写,但是隐藏了实现的机制,万变不离其宗,基本的框架是对应的。
以上是现阶段大概的理解,每个环节的衔接还不是很清楚,以后继续学习。
- VC深入浅出学习笔记(一)
- VC深入浅出学习笔记(二)
- VC深入浅出学习笔记(三)
- 深入浅出Android学习笔记(一)
- 《深入浅出MFC》学习笔记(一)
- HeadFirstSQL深入浅出SQL学习笔记(一)
- vc++ 学习笔记(一)
- VC++学习笔记(一)
- 深入浅出MFC学习笔记(一)
- <mfc深入浅出>学习笔记一
- js深入浅出学习笔记(一)
- 《ES6深入浅出》学习笔记(一)
- VC 学习笔记一
- VC学习笔记一
- 《深入浅出MFC》学习笔记之Win32程序设计原理(一)
- JavaScript深入浅出学习笔记(一)—数据类型
- 学习VC的笔记(一)
- vc学习笔记--控件篇(一)
- Writing Vim Plugins(编写Vim插件)
- YII Framework学习教程-YII的安全
- Struts2 上传文件类型限制(zip和rar)
- Android系统级深入开发之OpenMax系统结构和移植内容
- 查阅 Oracle 官方文档解决 oracle 编程相关的问题
- VC深入浅出学习笔记(一)
- 给Android应用开发者的十个建议
- 复杂与简单——软件的发展历程
- java环境变量配置
- jQuery实例之五:class的操作
- cas localhost改成IP地址后 无法跳转
- Android中ListView的用法案例
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets
- WinINet 学习资料