第四讲简单绘图与文本编辑.pptVIP

  • 3
  • 0
  • 约3.38千字
  • 约 26页
  • 2017-01-21 发布于辽宁
  • 举报
第四讲简单绘图与文本编辑.ppt

第四章 简单绘图 4.1 MFC消息映射机制 怎样在程序中画一条最简单的直线? WM_LBUTTONDOWN——起点 WM_LBUTTONUP——终点 两点连成一线 两种建立消息响应函数的方法 ClassView标签页上,右键单击类名,【Add Windows Message Handler…】 ClassWizard 4.1.1 ClassWizard Messege Maps选项卡 Member Variables选项卡 Automation选项卡:允许用户加入方法或属性; ActiveX Events选项卡:允许用户加入事件以支持ActiveX控件; Class Info 选项卡:用于观察当前工程中的类信息。 4.1.1 ClassWizard void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default MessageBox(View Clicked); CView::OnLButtonDown(nFlags, point); } 为什么在View类中添加? MainFrame类可以吗? 增加了消息响应函数后,源文件中会增加三处代码: 1、消息响应函数原型(头文件) 2、消息映射宏(源文件) 3、消息响应函数定义(源文件) 消息响应的过程: 1、到头文件中寻找是否有消息响应函数原型; 2、到源文件中看是否有消息映射宏; 3、调用消息响应函数。 在消息响应函数OnButtonDown中保存起点信息。 在消息响应函数OnButtonUp中绘制线条。 几种画线方法: 第五章 文本编程 5.1 插入符(文本插入符) 5.1 插入符(文本插入符) * * 第四讲 简单绘图与文本编辑 4.1.1 ClassWizard 视窗口始终覆盖在框架窗口之上,所有窗口只能由视类窗口捕捉。 函数的删除:ClassView选项卡上用鼠标右键单击函数名,选择【Delete】。 4.1.2 消息映射机制 4.1.2 消息映射机制 4.2 绘制线条 4.2 绘制线条 HDC CDC CClientDC CWindowDC 4.2.1 利用SDK全局函数实现画线功能 // 首先获得窗口的设备描述表 HDC hdc; hdc = ::GetDC(m_hWnd); //移动到线条的起点 MoveToEx(hdc, m_ptOrigin.x, m_ptOrigin.y, NULL); //画线 LineTo(hdc, point.x, point.y); //释放设备描述表 ::ReleaseDC(m_hWnd,hdc); 4.2.2 利用MFC的CDC类实现画线功能 CDC* pDC = GetDC(); pDC-MoveTo(m_ptOrigin); pDC-LineTo(point); ReleaseDC(pDC); 4.2.3 利用MFC的CClientDC类 实现画线功能 CClientDC dc(this); dc.MoveTo(m_ptOrigin); dc.LineTo(point); CClientDC类的对象在生命周期结束时,会自动释放其所占用的设备资源。 4.2.4 利用MFC的CWindowDC类 实现画线功能 CWindowDC dc(this); dc.MoveTo(m_ptOrigin); dc.LineTo(point); 4.2.5 绘制彩色线条 CPen pen(PS_SOLID,1,RGB(255,0,0)); CClientDC dc(this); CPen* pOldPen = dc.SelectObject(pen); dc.MoveTo(m_ptOrigin); dc.LineTo(point); dc.SelectObject(pOldPen); 4.3 使用画刷绘图 //创建一个红色画刷 CBrush brush(RGB(255,0,0)); //创建并获得设备描述表 CClientDC dc(this); //利用红色画刷填充鼠标拖曳过程中形成的矩形区域 dc.FillRect(CRect(m_ptOrigin,point),brush); 4.4 绘制连续线条 设置BOOL型变量m_bDraw,判断鼠标是否按下; 构造函数中进行初始化: m_bDraw = FALSE; OnLButtonDown函数中: m_bDraw = TRUE; OnLButtonUp

文档评论(0)

1亿VIP精品文档

相关文档