请问下面的程序中从“CDC *pDC=GetDC();。。。。。。”开始的部分是什么意思啊?有什么作用?谢谢!!! 10

voidCTestbmpcpDlg::OnButton1(){//TODO:AddyourcontrolnotificationhandlercodehereHWNDhW... void CTestbmpcpDlg::OnButton1() { // TODO: Add your control notification handler code here HWND hWndvoid CTestbmpcpDlg::OnButton1()
{
// TODO: Add your control notification handler code here
HWND hWnd = ::GetDesktopWindow();//获得屏幕的HWND.
HDC hScreenDC = ::GetDC(hWnd); //获得屏幕的HDC.
HDC MemDC = ::CreateCompatibleDC(hScreenDC);//创建内存DC
RECT rect; //该对象用于接收位图左上角和右下角的坐标
::GetWindowRect(hWnd,&rect);//该函数用于接收位图的尺寸
SIZE screensize;//视图的大小
screensize.cx=rect.right-rect.left;
screensize.cy=rect.bottom-rect.top;
hBitmap = ::CreateCompatibleBitmap(hScreenDC,screensize.cx,screensize.cy);//创建与屏幕兼容性位图
HGDIOBJ hOldBMP = ::SelectObject(MemDC,hBitmap);//把新的位图选入内存DC中用新的代替旧位图
::BitBlt(MemDC,0,0,screensize.cx,screensize.cy,hScreenDC,rect.left,rect.top,SRCCOPY);//该函数对指定的源设备环境区域中的像素
//进行位块(bit_block)转换,以传送到目标设备环境,hScreenDC是指向源设备环境的句柄
::SelectObject(MemDC,hOldBMP);//
::DeleteObject(MemDC);//该函数删除一个逻辑笔、画笔、字体、位图、区域或者调色板,释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就失效了。
::ReleaseDC(hWnd,hScreenDC);//函数释放设备上下文环境(DC)供其他应用程序使用。函数的效果与设备上下文环境类型有关。它只释放公用的和设备上下文环境,对于类或私有的则无效。

CDC *pDC=GetDC();//获取CDC对象的指针,注意用的事CWND类里面的成员函数不用::
HDC dDlgDC=pDC->m_hDC;
HDC MemDC1 = CreateCompatibleDC(dDlgDC);//该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。通过GetDc()获取的HDC直接与相关设备沟通,而本函数创建的DC,则是与内存中的一个表面相关联。
HGDIOBJ hOldBMP1 = ::SelectObject(MemDC1,hBitmap);
::StretchBlt(dDlgDC,0,0,600,400,MemDC1,0,0,screensize.cx,screensize.cy,SRCCOPY);//函数从源矩形中复制一个位图到目标矩形,必要时按目前目标设备设置的模式进行图像的拉伸或压缩。
::SelectObject(MemDC1,hOldBMP1);//
::DeleteObject(MemDC1);
::ReleaseDC(m_hWnd,dDlgDC);
展开
 我来答
C_stu
2011-05-05 · TA获得超过456个赞
知道小有建树答主
回答量:694
采纳率:0%
帮助的人:629万
展开全部
这么清楚的注释..你是想怎样?
追问
我的意思是说,其大体作用是什么,因为我把它注释掉会出现只有外部框架的情况而没有具体的图形?最主要的是为什么是可以注释掉的代码啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式