HBITMAP CGetScreenPrintDlg::CutScreen(LPRECT lprect)
{
HDC hscreendc,hmemdc;   //screen and memory DEVICE TABLE;
HBITMAP hbitmap, holdmap;
int nposx,nposy,nposx2,nposy2;
    int nWidth,nHeight;
int xScreen,yScreen;

if (IsRectEmpty(lprect))  //判断是否为空矩形
{
return NULL;
} hscreendc=CreateDC("DISPLAY",NULL,NULL,NULL);//创建屏幕HDC
hmemdc=CreateCompatibleDC(hscreendc); //创建MEMORY HDC; nposx=lprect->left;
nposy=lprect->top;
nposx2=lprect->right;
nposy2=lprect->bottom;
//**********得到屏幕的分辨率*************
xScreen=GetDeviceCaps(hscreendc,HORZRES);  //水平方向
yScreen=GetDeviceCaps(hscreendc,VERTRES);  //垂直方向 if (nposx<0) nposx=0;
if (nposx2>xScreen) nposx2=xScreen; if (nposy<0) nposx=0;
if (nposx2>yScreen) nposy2=yScreen;
nWidth=nposx2-nposx;  //得到WIDTH
nHeight=nposy2-nposy; //得到HEIGHT //**********创建一个与屏幕设备描述表兼容的位图
hbitmap=CreateCompatibleBitmap(hscreendc, nWidth , nHeight); //*********把屏幕的位图考到内存中***********
holdmap=(HBITMAP)SelectObject(hmemdc,hbitmap);
    //得到屏幕位图的HANDLE;
BitBlt(hmemdc,0,0,nWidth ,nHeight,hscreendc,nposx,nposy,SRCCOPY);
    
hbitmap=(HBITMAP)SelectObject(hmemdc,holdmap);

红色的这部分代码我实在是不明白,谁能举个形象的例子啊。谢谢了。
//m_picture0.SetBitmap(hbitmap);
DeleteDC(hscreendc);
DeleteDC(hmemdc);
  
return hbitmap;
}