MFC入门培训手册范本.doc
《MFC入门培训手册范本.doc》由会员分享,可在线阅读,更多相关《MFC入门培训手册范本.doc(13页珍藏版)》请在三一办公上搜索。
1、一.学习MFC所应具备的基础知识1.Win32程序基础.2.面向对象与C+语言基础.1.Win32程序基础一) 几个重要概念:API:系统开放出来给程序员调用的函数.SDK:开发工具包,以API编写的程序也叫SDK程序.MFC:是一个构建在Windows API上的C+类库.Application Framework:指一个关连,包装良好的类库(MFC就是一个FrameWork).GUI:MDI:SDI:UI:二)Windows 编程模型1)以消息为基础,事件为驱动.(message base, event driven)2)用Win32 实现”Hello World!”.3)消息映射模型(m
2、essage map)-一个重要的MFC概念.1.定义一个消息实体typdef struct MSGMAP_ENTRY_UINT nMessage;LONG (*pfn) (HWND, UINT, WPARAM, LPARAM); MSGMAP_ENTRY ;2.把消息和消息处理函数关联起来.MSGMAP_ENTRY messageEntries =WM_CREATE, OnCreate,WM_PAINT, OnPaint,WM_SIZE, OnSize,WM_COMMAND, OnCommand,WM_CLOSE, OnClose,WM_DESTROY, OnDestroy;MSGMAP_E
3、NTRY commandEntries =IDM_ABOUT, OnAbout,IDM_EXIT, OnExit,#define dim(x) (sizeof(x)/sizeof(x0);3.更好的消息处理函数LRESULT CALLBACK WndProc(HWND hWnd, UINT nMessage, WPARAM wParam,LPARAM lParam)int i;for (i = 0; i dim(messageEntries); i +)if (nMessage = messageEntriesi.nMessage)return (*messageEntriesi.pfn)(h
4、Wnd,nMessage,wParam,lParam);return DefWindowProc(hWnd,nMessage,wParam,lParam);LONG OnCommand(HWND hWnd, UINT nMessage, WPARAM wParam, LPARAM lParam)int i;for(i = 0; i dim(commandEntries); i +)if (nMessage = commandEntriesi.nMessage)return (*commandEntriesi.pfn)(hWnd,nMessage,wParam,lParam);return De
5、fWindowProc(hWnd, nMessage,wParam,lParam);LONG OnCreate(HWND hWnd, UINT nMessage, WPARAM wParam, LPARAM lParam).LONG OnAbout(HWND hWnd, UINT nMessage, WPARAM wParam, LPARAM lParam).4.Windows 程序的生死5.空闲的处理while(1)if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)if (msg.message = WM_QUIT)break;TranslateMess
6、age();DispatchMessage(); elseOnIdle();4)第一个MFC程序- “Hello World!”/Hello.hclass CMyApp : public CWinApppublic: virtual BOOL InitInstance ();class CMainWindow : public CFrameWndpublic: CMainWindow ();protected: afx_msg void OnPaint ();afx_msg void OnLButtonDown(UINT nFlags,CPoint point);afx_msg void On
7、LButtonUp(UINT nFlags,CPoint point);afx_msg void OnMouseMove(UINT nFlags,CPoint point);afx_msg void OnNcDestroy(); DECLARE_MESSAGE_MAP ();#include #include #include Hello.hCMyApp myApp;/ CMyApp member functionsBOOL CMyApp:InitInstance () m_pMainWnd = new CMainWindow; m_pMainWnd-ShowWindow (m_nCmdSho
8、w); m_pMainWnd-UpdateWindow (); return TRUE;/ CMainWindow message map and member functionsBEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd) ON_WM_PAINT ()ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()ON_WM_MOUSEMOVE()ON_WM_NCDESTROY()END_MESSAGE_MAP ()CMainWindow:CMainWindow () Create (NULL, _T (The Hello Applicatio
9、n);void CMainWindow:OnNcDestroy()delete this;2.面向对象与C+语言基础.1)成员变量与成员函数-封装class CShapeprivate:int m_nColor;public:virture void Display() cout ”shapen”;int SetColor(int nColor) m_nColor = nColor;2)代码复用-继承class CSquare : CShapepublic:virtual void Display() cout m_nColor = nColor;4)虚拟函数与多态1.如何实现这样一个动作:C
10、Shape shape5;/包含五个对象分别为正方形,矩形,椭圆行,圆形,三角行for (int i = 0; i SetPosition();pSquare = (CShape *)&shape;pSquare-SetColor(3);pShape = new CShape();pShape-Display();pSquare-Display();pShape = (CShape *)□pShape-Display();/为什么5)类型与实例剖析1.虚函数表(VTABLE-虚函数的实现基础)每个含虚函数的对象都有一个虚函数表,在内存中所占空间如下:每一个由此派生的类都有一个这样
11、的虚函数表。当调用虚函数时,首先透过vptr找到虚函数表,再从虚函数表中找出虚函数的地址。当从基类派生时会继承基类的虚函数表,而当派生类改写虚函数时,编译器会用派生类的虚函数地址改写虚函数表。6)类的静态成员(静态成员函数与静态成员变量)静态成员属于类,而不属于对象。所以可以在还没创建对象之前就处理静态成员。1.静态变量的初试化静态成员的初始化只能放在实现档中,类的外面。因为放在类的构造函数中或在头文件中都可能被多次调用。Int Cshape:m_nStatic = 0;main().2.静态函数因为静态函数在对象生成之前就已经存在,所以无法处理对象的非静态变量。7)各种对象的生存周期(构造函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 入门 培训 手册 范本
链接地址:https://www.31ppt.com/p-4219901.html