一. 画线条的四种方法:
第一种
hdc=::GetDC(m_hWnd);
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);
第二种
CDC *pDC=GetDC();
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);
第三种
CClientDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
第四种
CWindowDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
其中前两种需要使用GetDC和ReleaseDC,后两种因为封装的CClientDC和CWindowDC类中的构造和析构函数完成了这两项内容,因此不需要get和release
前三种对于Frame框架只能访问其客户区,不能访问其菲客户区,但是第四种客户区和非客户区都可以访问
二 获取桌面窗口的句柄函数GetDesktopWindow()
三 画笔的使用
CPen pen(PS_DOT,1,RGB(0,255,0)); //初始化画笔
CClientDC dc(this);
CPen *pOldPen=dc.SelectObject(&pen); //更改默认的画笔颜色为所设置的画笔颜色,返回值为先前使用的,注意在使用完之后需要返回到之前的设置
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen); //返回之前的设置,以便不影响其他程序的使用
画刷:
//CBrush brush(RGB(255,0,0));//设置画刷填充颜色
*CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
CBrush brush(&bitmap);//使用位图填充画刷
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);
设置无填充画刷:
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//设置画无填充颜色
CBrush *pOldBrush=dc.SelectObject(pBrush);
dc.Rectangle(CRect(m_ptOrigin,point));
dc.SelectObject(pOldBrush);