1 / 65
文档名称:

软件设计模式一.ppt

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

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

分享

预览

软件设计模式一.ppt

上传人:sxlw2017 2021/7/22 文件大小:405 KB

下载得到文件列表

软件设计模式一.ppt

相关文档

文档介绍

文档介绍:软件设计模式(一)
1
Why Patterns?
2
内容
从一个例子看模式
关于模式的研究情况
介绍一些重要的模式(部分)
第三次作业
3
一个设计例子
VC/Samples/MFC/OLE/DrawCli
4
DrawCli的基础
MFC提供的基础
Doc/View结构
Doc提供了强大的数据管理功能
View提供了强大的显示功能
splitwnd功能
CWinApp/CMainFrame
提供了一套命令处理流程
对OLE的封装
Active Container
OLE Clipboard
Property Page
数据结构管理功能
CObject/CObList
5
我们的设计焦点
用C++对象来表示每一个图元
定义图元的公共接口
如何处理用户的操作
鼠标的动作
图元对象的创建和管理
6
图元基类
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);
// ……
};
7
图元层次结构
CDrawObj
CDrawRect
CDrawPoly
CDrawOleObj
……
CDrawObj
CDrawRect
CDrawPoly
CDrawOleObj
……
8
图元的创建
永久支持:
CDocument::Serialize->CObList::Serialize ->CObject::Serialize
CDrawObj::Clone
DrawTool:创建图元对象
9
交互操作
键盘和菜单命令
MFC内部机制
鼠标操作
在CDrawView的鼠标处理函数中处理
工具箱:工具链,有一个当前活动工具
转交给当前活动工具来处理
10