实验九 基于文档视图结构的MFC简单应用程序框架设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
2、 在视图类的头文件 test9View.h 中声明有关的成员变量:
protected:
bool m_bDraw;
//绘图标识
HCURSOR m_Hcursor; CPoint m_pOld;
//光标对象 //记录鼠标位置
在视图类 CTest9View 的构造函数中对上述成员变量进行初始化:
CTest9View::CTest9View()
图 9-1、程序运行界面图
(1) 用户在视图窗口中按下鼠标左键,并拖动鼠标时,在窗口中即可进行“涂鸦”操 作,用户释放鼠标键时,绘图结束。
(2) 在文档类中设计一个数组,以保存视图窗口所绘制的线条坐标。使当窗口重绘时, 能够重现已绘图形。
[MFC 编程要点]
1. 视图类对象代表了应用程序的窗口客户区,是文档等信息的一个显示窗口,亦为用 户与程序间进行数据交互的桥梁。
{
// TODO: add construction code here
m_bDraw=FALSE;
//载入“十字”光标
m_Hcursor=AfxGetApp()->LoadStandardCursor(IDC_CROSS);
}
注:红色内容为 VC 自动生成的代码(下同)。 3、 点击菜单项 View->ClassWizard,使用 ClassWizard 为视图类 CTest9View 添加消息
//获取客户窗口 DC //绘图
dc.LineTo(point);
m_pOld=point;
}
CView::OnMouseMove(nFlags, point); }
void CTest9View::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_bDraw=FALSE;
//取消绘图状态
ReleaseCapture();
//释放鼠标捕捉
ClipCursor(NULL);
//取消鼠标区域的限制
CView::OnLButtonUp(nFlags, point); }
[思考题]
1. 设法将图形信息保存在文档对象中,使当窗口大小改变或覆盖时,可据此进行重绘。 2. 设法通过文档的序列化操作,将图形信息保存在指定文件中。当打开该文件时,显示相
void CTest9View::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_bDraw)
{ CClientDC dc(this); dc.MoveTo(m_pOld);
实验九 基于文档/视图结构的 MFC 简单应用程序框架设计(2 学时)
[实验目的]
1. 基本掌握 Windows 环境下 MFC 程序的开发流程和方法; 2. 基本掌握 MFC 中的文档/视图框架体系的简单编程方法;
[实验内容与步骤]
创建一个单文档的 MFC 工程,在其中实现简单的“涂鸦”操作。界面如图 9-1 所示, 实现如下功能:
{
// TODO: Add your message handler code here and/or call default
SetCursor(m_Hcursor);
//使用新光标
m_bDraw=TRUE;
//进入绘图状态
m_pOld=point; SetCapture();
//捕捉鼠标
CRect rect; GetClientRect(&rect); ClientToScreen(&rect); ClipCursor(rect);
2. 本实验中,一旦鼠标在窗口客户区内有所动作,则 MFC 将有关消息传递给视图类 对象Fra Baidu bibliotek行处理。
[VC 编程实现]
1、 使用 AppWizard 创建一个单文档的 MFC 工程 test9(在对话框“MFC AppWizard-Step 1”中选中“Single document”,各项设置均取默认值);
WM_LBUTTONDOWN,定义消息响应函数,实现按下鼠标左键的相关绘图操作。
ClassWizard 操作如图 9-2 所示。有关代码为:
图 9-2、使用 ClassWizard 为 CTest9View 添加消息 WM_LBUTTONDOWN
void CTest9View::OnLButtonDown(UINT nFlags, CPoint point)
关图形。
3
//获取客户窗口矩形区域 //转换为屏幕坐标 //限定鼠标不能移出客户窗口
CView::OnLButtonDown(nFlags, point);
2
} 同理,使用 ClassWizard 为视图类 CTest9View 添加消息 WM_LMOUSEMOVE 和 LBUTTONUP,并定义消息响应函数,实现移动鼠标和释放鼠标左键的相关绘图 操作。有关代码为:
相关文档
最新文档