В
MSDN, тот же скрин делается проще:
// Create a normal DC and a memory DC for the entire screen. The
// normal DC provides a "snapshot" of the screen contents. The
// memory DC keeps a copy of this "snapshot" in the associated
// 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);
Здравствуйте,
Подскажите пожалуйста, что в итоге делает этот код ? На MSDNе описаение отдельных функций вроде бы изучил, а вот как они между собой работают так и не могу понять.
То есть, последняя выполненная функция в Вашем коде - это BitBlt:
MSDN говорит, что - Функция BitBlt выполняет передачу битового блока цветовых данных, соответствующих прямоугольнику пикселей, из указанного контекста исходного устройства в контекст целевого устройства.
Откуда взялся этот битовый поток, что в данном случае контекст целевого устройства ? Это hDC или hDс ?
В каком виде и где этот поток хранится и что в данном случае такое поток ?
И самый главный вопрос: как получить доступ ко всему этому битовому потоку, что бы как-то прочитать его что ли ?