请问下面的程序中从“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); 展开
{
// 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); 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询