第一种:SDK下的HDC
HDC hdc = GetDC(hWnd);
//hWnd是InistInstance中调用CreateWindow返回的一个通常用HWND类型的hWnd变量接收
//hwnd代表一个窗体的实例句柄
实例应用:
MoveToEx(hdc, Spoint.x, Spoint.y, NULL); //移动直线起点
LineTo(hdc, Epoint.x, Epoint.y); //从起点画线到终点
ReleaseDC(hWnd, hdc); //DC是临界资源,用完一定要释放
第二种:Cwnd下的CDC
CDC *pdc = GetDC(); //CWnd的public成员函数CWnd::GetDC
实例运用:
pdc->MoveTo(Spoint);
pdc->LineTo(Epoint);
ReleaseDC(pdc);
第三种:CWnd 下的CClientDC
//因为是在”堆”中构造的dc,析构函数会释放dc
CClientDC dc( GetParent()或pWnd或this); //GetParent返回父窗口的指针pWnd
实例应用:
dc.MoveTo(Spoint);
dc.LineTo(Epoint);
第四种:CWnd下的CwindowDC
1. CWindowDCdc(GetParent()或this);
//得到父窗口的指针pWnd,线能画到窗口非客户区
2. CWindowDC dc(GetDeskTopWindow() );
//得到桌面(桌面也是一种窗体)的窗口指针pWnd,线能画到桌面
实例应用:用不同的dc对象得到同画线效果
dc.MoveTo(Spoint);
dc.LineTo(Epoint);