欢迎来到天天文库
浏览记录
ID:41726005
大小:54.70 KB
页数:4页
时间:2019-08-30
《实验九基于文档视图结构的MFC简单应用程序框架设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验九基于文档/视图结构的MFC简单应用程序框架设计(4学时)[实验目的]1.基木掌握Windows环境下MFC程序的开发流程和方法;2・基木掌握MFC中的文档/视图框架体系的简单编程方法;[实验内容与步骤]创建一个单文档的MFC工程,在其中实现简单的“涂鸦”操作。界面如图9-1所示,实现如下功能:图9・1、程序运行界而图(1)用户在视图窗口中按下鼠标左键,并拖动鼠标时,在窗口中即可进行“涂鸦”操作,用户釋放鼠标键时,绘图结束。(2)在文档类中设计一•个数组,以保存视图窗口所绘制的线条处标。使当窗口重绘时,能够重现已绘图形。[MFC编程要点]1.视图类对象代表了应用程序的窗口客八区,是文
2、档等信息的一个显示窗口,亦为用户与程序间进行数据交互的桥梁。2・本实验中,一旦鼠标在窗I」客户区内有所动作,则MFC将有关消息传递给视图类对彖进行处理。[VC编程实现]1、使用AppWizard创建一个单文档的MFC工程test9(在对话框“MFCAppWizard-Step1”中选中“Singledocument”,各项设置均取默认值);2、在视图类的头文件tcst9Vicw.h中声明冇关的成员变量:protected:boolm_bDraw;〃绘图标识HCURSORm_Hcursor;〃光标对彖CPointm_pOld;〃记录鼠标位置在视图类CTest9View的构造函数中对上述成员
3、变量进行初始化:CTcst9Vicw::CTcst9Vicw(){//TODO:addconstructioncodeherem_bDraw=FALSE;〃载入“十字”光标m_Hcursor=AfxGctApp()->LoadStandardCursor(IDC_CROSS);}注:红色内容为vc自动主成的代码(卜-同)。3、点击菜单项View->ClassWizard,使用ClassWizard为视图类CTest9View添加消息WM_LBUTTONDOWN,定义消息响应函数,实现按下鼠标左键的相关绘图操作。ClassWizard操作如图9-2所示。有关代码为:MFCClassWiza
4、rdMessageMaps
5、MemberVariables
6、Automation
7、ActiveXEvents
8、ClassInfo
9、Eroject:Classname:
10、test9
11、cTest9View刁E:..Mest9test9test9View.h,E:..test9test9View.cppObjectIDs:Messages:AddC[ass・・・▼
12、AddFunctionDeleteFunctionAPP_ABOUTAPP^EXITEDlfCOPYEDIT.CUTEDIT_PASTEEDIT_UNDOWM_HELRNFOWMWMWMWMHSCROLLKEYDOWNKEY
13、UPKILLFOCUSWMLBUTTONDBLCLKWMLBUTTONDOWNMemberfunctions:VOnBcginPrintingVOnDrawVOnEndPrintingVOnPrcparcPrintingVPrrCreateWindowDescription:IndicateswhenleftmousebuttonispressedEditCodeCancelSetCursor(m_Hcursor);m_bDraw=TRUE;m_pOld=point;SetCapture();CRectrect;GetClientRect(&rect);ClicntToScrccn(&i
14、cct);ClipCursor(rect);图9-2使丿IJClassWizard为CTest9View添加消息WM_LBUTTONDOWNvoidCTcst9Vicw::OnLButtonDown(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandlercodehereand/orcalldefault〃使用新光标〃进入绘图状态〃捕捉鼠标〃获取客户窗口矩形区域〃转换为屏幕坐标〃限定鼠标不能移出客户窗11CView::OnLButtonDown(nFlags,point);同理,使用ClassWizard为视图类CTest9View添加消息
15、WM.LMOUSEMOVE和LBUTTONUP,并定义消息响应函数,实现移动鼠标和释放鼠标左键的相关绘图操作。有关代码为:voidCTest9View::OnMouseMove(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandlercodehereand/orcalldefaultif(m_bDraw){CClientDCdc(this);〃获取客户窗UDCdc.MoveTo(m_p
此文档下载收益归作者所有