1.新建单文档工程
2.首先在CDrawView中添加 private成员 CPoint m_ptOrigin(用来记录原点的)
3.然后再VC的类向导中 添加 两个 消息 一个是 鼠标按下的 一个是 弹起的
4.在CDrawView构造函数中 初始化CPoint
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
//利用SDK 实现绘图
/*
HDC hdc=::GetDC(m_hWnd);//不指定::域作用符将使用CDrawView中的GetDC 每个CWnd窗口类中一般会有个窗口句柄成员 m_hWnd
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);
*/
//利用CDC类实现绘图
/*
CDC* pDc;
pDc=GetDC();
pDc->MoveTo(m_ptOrigin);
pDc->LineTo(point);
ReleaseDC(pDc);
*/
//利用CClientDC类绘图 CClinetDC析构时 会自动释放设备句柄资源
/*
CClientDC DC(this);
DC.MoveTo(m_ptOrigin);
DC.LineTo(point);
*/
//利用CWindowDC类 在框架窗口上绘图
/*
CWindowDC DC(GetParent());//视类窗口的 父窗口就是框架窗口 CMainFrame GetParent()实现的就是获取父窗口指针
DC.MoveTo(m_ptOrigin);
DC.LineTo(point);
*/
//画带颜色的线条 默认的是黑色的 如果想画其他颜色 用CPen
/*
CPen pen(PS_DASH,10,RGB(255,0,0));//构造画笔对象
CClientDC DC(this);
DC.SelectObject(&pen); //将GDI对象 画笔选入 设备描述表中
DC.MoveTo(m_ptOrigin);
DC.LineTo(point);
*/
//使用画刷 画图 画刷常用来填充一块区域
/*
CBrush brh(RGB(0,255,0));
CClientDC DC(this);
DC.SelectObject(brh);
DC.FillRect(CRect(m_ptOrigin,point),&brh); //填充 函数
*/
//使用位图画刷
/*
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);//载入位图
CBrush brh(&bmp); //用位图构造画刷
CClientDC DC(this);
DC.SelectObject(brh);
DC.FillRect(CRect(m_ptOrigin,point),&brh);
*/
//透明画刷的创建 在绘图的时候 如果画一个区域 他会默认以白色的画刷填充
/*
CBrush* pbrh=CBrush::FromHandle(static_cast<HBRUSH>(GetStockObject(NULL_BRUSH)));
//只有通过将GetStockObject()中的参数设为NULL_BRUSH 获取透明画刷
CClientDC DC(this);
CBrush* pOldBrh=DC.SelectObject(pbrh);
DC.Rectangle(CRect(m_ptOrigin,point));
DC.SelectObject(pOldBrh);
*/
CView::OnLButtonUp(nFlags, point);
}