Спасибо. Многое прояснилось, если конечно эта информация достоверна Вы можете дать ссылку на официальную документацию?
Не обижайтесь, что не верю на слово, просто такое поолжение вещей разбивает мои мечты. Получается, что скоростного фотографирования окна, которое стоит на заднем плане добиться не получится, т.к. в видео памяти информации о нём нет? Или есть другой вариант?
Плюс на сомнения по поводу копирования из видеобуфера наталкивает пример из MSDN, в котором данные копируются из окна "DISPLAY", или это и есть видодрайвер? Плюс ко всему здесь используется то же копирование на Bitmap:
hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL);
hdcCompatible = CreateCompatibleDC(hdcScreen);
// Create a compatible bitmap for hdcScreen.
hbmScreen = CreateCompatibleBitmap(hdcScreen,
GetDeviceCaps(hdcScreen, HORZRES),
GetDeviceCaps(hdcScreen, VERTRES));
if (hbmScreen == 0)
errhandler("hbmScreen", hwnd);
// Select the bitmaps into the compatible DC.
if (!SelectObject(hdcCompatible, hbmScreen))
errhandler("Compatible Bitmap Selection", hwnd);
// Hide the application window.
ShowWindow(hwnd, SW_HIDE);
//Copy color data for the entire display into a
//bitmap that is selected into a compatible DC.
if (!BitBlt(hdcCompatible,
0,0,
bmp.bmWidth, bmp.bmHeight,
hdcScreen,
0,0,
SRCCOPY))
errhandler("Screen to Compat Blt Failed", hwnd);
// Redraw the application window.
ShowWindow(hwnd, SW_SHOW);
---
|