1 / 65
文档名称:

软件设计模式.ppt

格式:ppt   大小:1,251KB   页数:65页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件设计模式.ppt

上传人:cby201601 2018/3/7 文件大小:1.22 MB

下载得到文件列表

软件设计模式.ppt

文档介绍

文档介绍:软件设计模式(一)
Why Patterns?
内容
从一个例子看模式
关于模式的研究情况
介绍一些重要的模式(部分)
一个设计例子
VC/Samples/MFC/OLE/DrawCli
DrawCli的基础
MFC提供的基础
Doc/View结构
Doc提供了强大的数据管理功能
View提供了强大的显示功能
splitwnd功能
CWinApp/CMainFrame
提供了一套命令处理流程
对OLE的封装
Active Container
OLE Clipboard
Property Page
数据结构管理功能
CObject/CObList
我们的设计焦点
用C++对象来表示每一个图元
定义图元的公共接口
如何处理用户的操作
鼠标的动作
图元对象的创建和管理
图元基类
class CDrawObj : public CObject
{
// Attributes
CDrawDoc* m_pDocument; // owner
virtual int GetHandleCount();
virtual CPoint GetHandle(int nHandle);
virtual HCURSOR GetHandleCursor(int nHandle);
virtual void SetLineColor(COLORREF color);
virtual void SetFillColor(COLORREF color);
// Operations
virtual void Draw(CDC* pDC);
virtual void DrawTracker(CDC* pDC, TrackerState state);
virtual void MoveTo(const CRect& positon, CDrawView* pView = NULL);
virtual int HitTest(CPoint point, CDrawView* pView, BOOL bSelected);
virtual BOOL Intersects(const CRect& rect);
virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL);
virtual void OnOpen(CDrawView* pView);
virtual void OnEditProperties();
virtual CDrawObj* Clone(CDrawDoc* pDoc = NULL);
virtual void Remove();
virtual void Serialize(CArchive& ar);
// ……
};
图元层次结构
CDrawObj
CDrawRect
CDrawPoly
CDrawOleObj
……
CDrawObj
CDrawRect
CDrawPoly
CDrawOleObj
……
图元的创建
永久支持:
CDocument::Serialize->CObList::Serialize ->CObject::Serialize
CDrawObj::Clone
DrawTool:创建图元对象
交互操作
键盘和菜单命令
MFC内部机制
鼠标操作
在CDrawView的鼠标处理函数中处理
工具箱:工具链,有一个当前活动工具
转交给当前活动工具来处理