1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
ShowWindow(hDesktopWnd, SW_SHOW);
SetForegroundWindow(hDesktopWnd);
RECT rect;
bool bValue = GetWindowRect(hDesktopWnd, &rect);
if (! bValue) {
DWORD err = GetLastError();
return;
}
int xScreen,yScreen; //check if the window is out of the screen or maximixed <Qiang>
//int xshift = 0, yshift = 0;
xScreen = GetSystemMetrics(SM_CXSCREEN);
yScreen = GetSystemMetrics(SM_CYSCREEN);
if(rect.right > xScreen)
rect.right = xScreen;
if(rect.bottom > yScreen)
rect.bottom = yScreen;
if(rect.left < 0){
//xshift = -r.left;
rect.left = 0;
}
if(rect.top < 0){
//yshift = -r.top;
rect.top = 0;
}
if (hauteur < 0) hauteur = rect.bottom - rect.top;
if (largeur < 0) largeur = rect.right - rect.left;
if (abscisse < 0) abscisse = rect.left;
if (ordonnee < 0) ordonnee = rect.top;
HDC ScreenSrc;
ScreenSrc = GetWindowDC(hDesktopWnd);
if (ScreenSrc == NULL) return;
// create a memory context to select the dibsection into
HDC memDC = CreateCompatibleDC(ScreenSrc);
HBITMAP hbmp=CreateCompatibleBitmap(ScreenSrc,largeur,hauteur);
SelectObject(memDC, hbmp);
BitBlt(memDC,0,0,largeur,hauteur,ScreenSrc,abscisse,ordonnee,SRCCOPY); |
Partager