Отображение HBITMAP - PullRequest
       88

Отображение HBITMAP

2 голосов
/ 20 ноября 2011

прошу прощения заранее;Я новичок в c и действительно не знаю, что делаю.

Я пытаюсь сделать снимок экрана и отобразить его с помощью Windows 7 и c.Я знаю, это звучит глупо, в конце концов мне понадобятся все эти функции в разных программах, та, которая захватывает экран, отправит изображение той, которая отображает его, но сейчас я просто пытаюсь заставить их обе работать в одной программе,Вот код, который я собрал до сих пор:

     #include <windows.h>

bool ScreenCapture(int x, int y, int width, int height){
// get a DC compat. w/ the screen
HDC hDc = CreateCompatibleDC(0);

// make a bmp in memory to store the capture in
HBITMAP hBmp = CreateCompatibleBitmap(GetDC(0), width, height);

// join em up
SelectObject(hDc, hBmp);

// copy from the screen to my bitmap
BitBlt(hDc, 0, 0, width, height, GetDC(0), x, y, SRCCOPY);

HDC myhDc = GetDC(hBitmap, sizeof(BITMAP), (LPSTR)&Bitmap);

BitBlt(myhDc, 0, 0, width, height, hDc, x, y, SRCCOPY);

//Display bitmap
DrawBitmap(myhDC,0,0,hBmp,SRCCOPY);

//GetDC(hBitmap, sizeof(BITMAP), (LPSTR)&Bitmap);

// free the bitmap memory
DeleteObject(hBmp);

return 0;
}

int main(){
ScreenCapture(500, 200, 300, 300);
system("pause");
}

Я просто не смог найти способ отобразить HBITMAP.Как отобразить HBITMAP?

Обновление: я добавил DrawBitmap, но он не работает ... Я получаю следующий вывод и не уверен, как его обработать:

'win_screenshot.exe ': загружен' C: \ Users \ mbrooker \ Documents \ Visual Studio 2010 \ Projects \ win_screenshot \ Debug \ win_screenshot.exe ', символы загружены.'win_screenshot.exe': загружен 'C: \ Windows \ SysWOW64 \ ntdll.dll', не удается найти или открыть файл PDB 'win_screenshot.exe': загружен 'C: \ Windows \ SysWOW64 \ kernel32.dll', не удается найти илиоткрыть файл PDB «win_screenshot.exe»: загружен «C: \ Windows \ SysWOW64 \ KernelBase.dll», не удается найти или открыть файл PDB «win_screenshot.exe»: загружен «C: \ Windows \ SysWOW64 \ user32.dll», Не удается найти или открыть файл PDB 'win_screenshot.exe': загружен 'C: \ Windows \ SysWOW64 \ gdi32.dll', Не удается найти или открыть файл PDB 'win_screenshot.exe': Загружен 'C: \ Windows \ SysWOW64 \lpk.dll ', не удается найти или открыть файл PDB' win_screenshot.exe ': загружен' C: \ Windows \ SysWOW64 \ usp10.dll ', не удается найти или открыть файл PDB' win_screenshot.exe ': загружен' C: \Windows \ SysWOW64 \ msvcrt.dll ', не удается найти или открыть файл PDB' win_screenshot.exe ': загружен' C: \ Windows \ SysWOW64 \ advapi32.dll ', не удается найти или открыть файл PDB' win_screenshot.exe ': загружен'C: \ Windows \ SysWOW64 \ sechost.dll', не удается найти или открыть файл PDB 'win_screenshot.exe': загружен 'C: \ Windows \ SysWOW64 \ rpcrt4.dll ', не удается найти или открыть файл PDB' win_screenshot.exe ': загружен' C: \ Windows \ SysWOW64 \ sspicli.dll ', не удается найти или открыть файл PDB' win_screenshot.exe ': загружен«C: \ Windows \ SysWOW64 \ cryptbase.dll», не удается найти или открыть файл PDB «win_screenshot.exe»: загружен «C: \ Windows \ SysWOW64 \ msvcr100d.dll», символы загружены.«win_screenshot.exe»: загружен «C: \ Windows \ SysWOW64 \ imm32.dll», не удается найти или открыть файл PDB «win_screenshot.exe»: загружен «C: \ Windows \ SysWOW64 \ msctf.dll», не удается найти илиоткрыть файл PDB «win_screenshot.exe»: загружен «C: \ Windows \ SysWOW64 \ apphelp.dll», не удается найти или открыть файл PDB «win_screenshot.exe»: загружен «ImageAtBase0x4ab60000», загрузка отключена с помощью параметра «Включить / исключить».'win_screenshot.exe': выгружен 'ImageAtBase0x4ab60000' Программа '[1480] win_screenshot.exe: Native' вышла с кодом 0 (0x0).

1 Ответ

1 голос
/ 20 ноября 2011

Отображение HBITMAP будет означать разрыв его (например, через BitBlt) в другой DC.По аналогии с тем, что вы уже делаете, просто с другим DC, который может быть, например, DC окна, см. GetDC.

MSDN предоставляет вам пример кода: Масштабирование изображения см. DrawBitmap функция.

...