欢迎来到天天文库
浏览记录
ID:58729391
大小:403.50 KB
页数:65页
时间:2020-10-04
《软件设计模式一ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、软件设计模式(一)潘爱民icst.pku.edu.cn/CompCourseWhyPatterns?内容从一个例子看模式关于模式的研究情况介绍一些重要的模式(部分)第三次作业一个设计例子VC/Samples/MFC/OLE/DrawCliDrawCli的基础MFC提供的基础Doc/View结构Doc提供了强大的数据管理功能View提供了强大的显示功能splitwnd功能CWinApp/CMainFrame提供了一套命令处理流程对OLE的封装ActiveContainerOLEClipboardPropertyPage数据结构管理功能C
2、Object/CObList我们的设计焦点用C++对象来表示每一个图元定义图元的公共接口如何处理用户的操作鼠标的动作图元对象的创建和管理图元基类classCDrawObj:publicCObject{//AttributesCDrawDoc*m_pDocument;//ownervirtualintGetHandleCount();virtualCPointGetHandle(intnHandle);virtualHCURSORGetHandleCursor(intnHandle);virtualvoidSetLineColor(CO
3、LORREFcolor);virtualvoidSetFillColor(COLORREFcolor);//OperationsvirtualvoidDraw(CDC*pDC);virtualvoidDrawTracker(CDC*pDC,TrackerStatestate);virtualvoidMoveTo(constCRect&positon,CDrawView*pView=NULL);virtualintHitTest(CPointpoint,CDrawView*pView,BOOLbSelected);virtualBOOL
4、Intersects(constCRect&rect);virtualvoidMoveHandleTo(intnHandle,CPointpoint,CDrawView*pView=NULL);virtualvoidOnOpen(CDrawView*pView);virtualvoidOnEditProperties();virtualCDrawObj*Clone(CDrawDoc*pDoc=NULL);virtualvoidRemove();virtualvoidSerialize(CArchive&ar);//……};图元层次结构
5、CDrawObjCDrawRectCDrawPolyCDrawOleObj……CDrawObjCDrawRectCDrawPolyCDrawOleObj……图元的创建永久支持:CDocument::Serialize->CObList::Serialize->CObject::SerializeCDrawObj::CloneDrawTool:创建图元对象交互操作键盘和菜单命令MFC内部机制鼠标操作在CDrawView的鼠标处理函数中处理工具箱:工具链,有一个当前活动工具转交给当前活动工具来处理工具箱和CDrawToolclassCD
6、rawTool{//Constructorspublic:CDrawTool(DrawShapenDrawShape);//OverridablesvirtualvoidOnLButtonDown(CDrawView*pView,UINTnFlags,constCPoint&point);virtualvoidOnLButtonDblClk(CDrawView*pView,UINTnFlags,constCPoint&point);virtualvoidOnLButtonUp(CDrawView*pView,UINTnFlags,co
7、nstCPoint&point);virtualvoidOnMouseMove(CDrawView*pView,UINTnFlags,constCPoint&point);virtualvoidOnEditProperties(CDrawView*pView);virtualvoidOnCancel();//AttributesDrawShapem_drawShape;staticCDrawTool*FindTool(DrawShapedrawShape);staticCPtrListc_tools;staticDrawShapec_
8、drawShape;//……};DrawTool层次结构CDrawToolCSelectToolCRectToolCPolyTool……CDrawToolCSelectToolCRectToolCPolyTool……例子
此文档下载收益归作者所有