1 / 66
文档名称:

软件设计模式(一).ppt

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

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

分享

预览

软件设计模式(一).ppt

上传人:sanshengyuanting 2016/5/27 文件大小:0 KB

下载得到文件列表

软件设计模式(一).ppt

相关文档

文档介绍

文档介绍:软件设计模式(一) 潘爱民 2003-12-12 .pCourse2003/ 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 的鼠标处理函数中处理–工具箱:工具链,有一个当前活动工具–转交给当前活动工具来处理