Отображение HBITMAP
Я прошу прощения заранее; Я новичок в с, и я действительно не знаю, что я делаю.
Я пытаюсь захватить и отобразить снимок экрана с помощью 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: \ Wind" ows\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 ответ
Отображение HBITMAP
будет включать уничтожение (например, через BitBlt
в другое DC
, По аналогии с тем, что вы уже делаете, просто с другим DC, который может быть, например, DC окна, см. GetDC
,
MSDN предоставляет вам пример кода: масштабирование изображения, см. DrawBitmap
функция.