C++程序设计教程 MFC简介2
C++程序设计教程 MFC简介2
1. Runt imec|ass执行期类型识别 1) CRuntimeClass struct CRuntimeClass LPCSTR m pszclassName i CRuntimeClass* m pBaseClass; static CRuntimeClass* fIrstclass; CRuntimeClass* m pNextclass CObject CCmdTarget CWnd NULL m pBaseclass m pBase Class m pBaseclass m pNextclass m pNextclass m pNextclass
1.RuntimeClass 执行期类型识别 1) CRuntimeClass struct CRuntimeClass { LPCSTR m_lpszClassName; CRuntimeClass* m_pBaseClass; static CRuntimeClass* pFirstClass; CRuntimeClass* m_pNextClass; }; CObject m_pBaseClass m_pNextClass CCmdTarget m_pBaseClass m_pNextClass CWnd m_pBaseClass m_pNextClass NULL
2. Serialize串行化 M CArchive void CMy Doc: Serialize(CArchive& ar) if(ar.工 sToring() ar> (word&)m sizeDoc
2.Serialize 串行化 CArchive void CMyDoc::Serialize(CArchive& ar) { if ( ar.IsStoring() ) ar > (WORD&)m_sizeDoc; }
3 Message Mapp ing消息映射 1) DECLARE MESSAGE MAP O 2) BEGIN MESSAGE MAP ON COMMAND(… END MESSAGE MAPO 3) CWinApp 工nit工 ns tance() Run o ExitInstance o
3.Message Mapping 消息映射 1) DECLARE_MESSAGE_MAP() 2) BEGIN_MESSAGE_MAP() ON_COMMAND(……) END_MESSAGE_MAP() 3) CWinApp InitInstance() Run() ExitInstance()
4.MC类的层次结构 class cobject class CCmdTarget public cobject class cWinThread public CCmdTarget class cwinApp public CWinThread class CMyWinApp public CWinApp class CWnd: public CCmdTarget class Cview public CWnd class CMyView public CView class CFrameWnd: public CWnd class CMainFrame public CFrameWnd class CDocument public CCmdTarget class CMy Doc public CDocument
4. MFC类的层次结构 class CObject class CCmdTarget : public CObject class CWinThread : public CCmdTarget class CWinApp : public CWinThread class CMyWinApp : public CWinApp class CWnd : public CCmdTarget class CView : public CWnd class CMyView : public CView class CFrameWnd : public CWnd class CMainFrame : public CFrameWnd class CDocument : public CCmdTarget class CMyDoc : public CDocument
1. COb ject 1)一般诊断 Assertvalid 2)运行期识别 Runtimeclass 3)串行化 Seria1ize )动态创建 DECLARE DYNAMIC/ IMPLEMENT DYNAMIC 2. CCmdTarget public COb ject 1)消息发送 BEGIN MESSAGE MAP(CMy View, Cview oN COMMAND (ID FILE OPEN, OnFileOpen) END MESSAGE MAP O 2)等待光标 3)支持自动化 Idispatch COM
1. CObject 1) 一般诊断 AssertValid 2) 运行期识别 RuntimeClass 3) 串行化 Serialize 4) 动态创建 DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC 2. CCmdTarget : public CObject 1) 消息发送 BEGIN_MESSAGE_MAP(CMyView,Cview) ON_COMMAND(ID_FILE_OPEN,OnFileOpen) END_MESSAGE_MAP() 2) 等待光标 3) 支持自动化 Idispatch COM
3. CWinApp: public CWin Thread 1)获取应用程序的信息。 2)支持注册表 Registrykey 3)支持文档 Document Template 4. CWnd: public CCmdTarget 1)注册新窗口类。 2)创建和使用窗口 Create, CreateR; 5. CFrameWnd: public CWnd 标题栏、系统菜单、边框、最小/最大化
3. CWinApp : public CWinThread 1) 获取应用程序的信息。 2) 支持注册表 RegistryKey 3) 支持文档 Document Template 4. CWnd : public CCmdTarget 1) 注册新窗口类。 2) 创建和使用窗口 Create, CreateEx; 5. CFrameWnd : public CWnd 标题栏、系统菜单、边框、最小/最大化
6. CView: public CWnd 1)显示/打印的处理 Ondraw() 2)与用户进行交互操作(鼠标/键盘) OnLButtonDown/OnLButtonUp OnKeyDown 3)系统重画 Invalidate(); UpdateWindow( 7. CDocument: public CCmdTarget 1)文档的输入/输出。 OpenDocument/SaveDocument 2)数据的保存和更新 3)ⅵiew的维护
6. CView : public CWnd 1) 显示/打印的处理 OnDraw() 2) 与用户进行交互操作(鼠标/键盘) OnLButtonDown/OnLButtonUp OnKeyDown … … 3) 系统重画 Invalidate(); UpdateWindow() 7. CDocument : public CCmdTarget 1) 文档的输入/输出。 OpenDocument/SaveDocument 2) 数据的保存和更新; 3) View的维护
GD基础知识 癱GD|(图形设备接口) GD是一个可执行程序 GD|是一个抽象的绘图程序接口,程序通过它 访问图形设备驱动 蜂DC( device context)(设备上下文)是绘图 图形函数的集合 CDC类包含了绘图所需要的所有成员函数
GDI基础知识 GDI(图形设备接口) GDI是一个可执行程序 GDI是一个抽象的绘图程序接口,程序通过它 访问图形设备驱动 DC(device context )(设备上下文)是绘图 图形函数的集合。 CDC类包含了绘图所需要的所有成员函数
CDC类的派生类 派生类名称 说明 形 CClientDC提供对窗口客户区域的图形访问 CMetaFileDC创建独立于设备的图元文件 CPaintDC在 MAin Frame中的 OnPaint0内使 用的DC CWindowDc在整个窗口画图的DC
CDC类的派生类 派生类名称 说明 CClientDC 提供对窗口客户区域的图形访问 CMetaFileDC 创建独立于设备的图元文件 CPaintDC 在CMainFrame中的OnPaint()内使 用的DC CWindowDC 在整个窗口画图的DC