Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4471221
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-07-07 16:42:09

工程代码: page100_1.rar  

    MFC为我们提供了一个设备描述表的封装类CDC Class Device Discrible,该封转了所有与绘图相关的操作。该类提供了一个数据成员m_hDC,用来保存与CDC类相关的DC句柄。其道理与CWnd类提供m_hWnd成员变量保存与窗口相关的窗口句柄是一样的。

   在 利用SDK全局函数实现画线功能 的基础上, 我们只需要修改 void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 就可以了

   修改代码如下:

  1. void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
  2. {
  3.     // TODO: Add your message handler code here and/or call default
  4. /*
  5.     //首先获得窗口的设备描述表
  6.     HDC hdc;
  7.     hdc = ::GetDC(m_hWnd);
  8.     //移动到线条的起点
  9.     MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
  10.     //画线
  11.     LineTo(hdc,point.x,point.y);
  12.     //释放设备描述符
  13.     ::ReleaseDC(m_hWnd,hdc);
  14. */

  15.     CDC * pDC = GetDC();
  16.     pDC->MoveTo(m_ptOrigin);
  17.     pDC->LineTo(point);
  18.     ReleaseDC(pDC);
  19.     CView::OnLButtonUp(nFlags, point);
  20. }

    利用MFC类实现画线功能时,首先需要定义一个CDC类型的指针,并利用CWnd类的成员函数GetDC获得当前窗口的设备描述表对象的指针;接着利用CDC类的成员函数MoveTo 和 LineTo 完成画线操作;最后调用CWnd类的成员函数RealeaseDC释放设备描述表资源。




阅读(3196) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~