各种DC的使用

来源:互联网 发布:照片墙设计软件 编辑:程序博客网 时间:2024/05/15 06:08

第一种: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);
原创粉丝点击