Screenshot , schon wieder ein Problem :-
-
Was ist daran so verkehrt ??
int main() { HBITMAP bmpScreen; HWND hwndScreen; HDC hdcScreen; void *pixel; HDC hdcCompatibleScreen; BITMAPINFO bmpinfo; BITMAPFILEHEADER bmpfh; BITMAPINFOHEADER bmpih; HGDIOBJ OldObj; DWORD bytes_written; HANDLE file; hwndScreen = GetDesktopWindow(); hdcScreen = GetDC(hwndScreen); hdcCompatibleScreen = CreateCompatibleDC(hdcScreen); bmpih.biSize = sizeof(BITMAPINFOHEADER); bmpih.biHeight = 768; bmpih.biWidth = 1024; bmpih.biPlanes = 1; bmpih.biBitCount = 24; bmpih.biCompression = BI_RGB; bmpih.biSizeImage = (bmpih.biWidth * bmpih.biBitCount)*bmpih.biHeight; bmpih.biXPelsPerMeter = 0; bmpih.biYPelsPerMeter = 0; bmpih.biClrImportant = 0; bmpinfo.bmiHeader = bmpih; bmpScreen = CreateDIBSection(hdcScreen,&bmpinfo,DIB_RGB_COLORS,(void**)pixel,NULL,NULL); OldObj = SelectObject(hdcCompatibleScreen,bmpScreen); BitBlt(hdcCompatibleScreen,0,0,1024,768,hdcScreen,0,0,SRCCOPY); bmpfh.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); bmpfh.bfSize = (3*bmpih.biHeight*bmpih.biWidth)+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); bmpfh.bfType=0x4d42; bmpfh.bfReserved1 = 0; bmpfh.bfReserved2 = 0; file=CreateFile(L"c:\\mybmp.bmp",GENERIC_READ | GENERIC_WRITE,(DWORD)0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); WriteFile(file,&bmpfh,sizeof(BITMAPFILEHEADER),&bytes_written,NULL); WriteFile(file,&bmpih,sizeof(BITMAPINFOHEADER),&bytes_written,NULL); WriteFile(file,&pixel,bmpih.biSizeImage,&bytes_written,NULL); }
-
falsches forum
-
Jop sorry, den Fehler hab ich auch noch nicht beschrieben. Hab ausversehen zu fürh auf senden gedrückt.
Ich kann es debuggen aber danach treten tonnenweise Fehler auf !!!
-
BlackZero schrieb:
Ich kann es debuggen aber danach treten tonnenweise Fehler auf !!!
Das hilft uns nicht, was für fehler?
-
Ich bin nun soweit ein file wird erstellt und es ist alles schwarz, toll.
-
Heute ist nicht so mein Tage den Quellcode hab ich doch vergessen
int main() { HBITMAP bmpScreen; HWND hwndScreen; HDC hdcScreen; HBITMAP hbmScreen; HDC hdcCompatibleScreen; BITMAPINFO bmpinfo; BITMAPFILEHEADER bmpfh; BITMAPINFOHEADER bmpih; HGDIOBJ OldObj; DWORD bytes_written; int* pixels = new int[1024*768]; HANDLE file; hwndScreen = GetDesktopWindow(); hdcScreen = GetDC(hwndScreen); hdcCompatibleScreen = CreateCompatibleDC(hdcScreen); ZeroMemory(&bmpih,sizeof(BITMAPINFOHEADER)); bmpih.biSize = sizeof(BITMAPINFOHEADER); bmpih.biHeight = 768; bmpih.biWidth = 1024; bmpih.biPlanes = 1; bmpih.biBitCount = 24; bmpih.biCompression = BI_RGB; bmpih.biSizeImage = ((((bmpih.biWidth * bmpih.biBitCount) + 31) & ~31) >> 3) * bmpih.biHeight; bmpih.biXPelsPerMeter = 0; bmpih.biYPelsPerMeter = 0; bmpih.biClrImportant = 0; bmpinfo.bmiHeader=bmpih; hbmScreen = CreateCompatibleBitmap(hdcScreen,1024,768); //hOLT ES VOM DESKTOP UND kOPIERT ES IN EIN rECTANGEL BitBlt(hdcCompatibleScreen,0,0,1024,768,hdcScreen,0,0,SRCCOPY); GetDIBits(hdcCompatibleScreen,hbmScreen,0,768,pixels,&bmpinfo,DIB_RGB_COLORS); bmpfh.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); bmpfh.bfSize = (3*bmpih.biHeight*bmpih.biWidth)+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); bmpfh.bfType=0x4d42; bmpfh.bfReserved1 = 0; bmpfh.bfReserved2 = 0; file= CreateFile(L"c:\\mybmp.bmp",GENERIC_WRITE,0,0,OPEN_ALWAYS,0,0); WriteFile(file,&bmpfh,sizeof(BITMAPFILEHEADER),&bytes_written,NULL); WriteFile(file,&bmpih,sizeof(BITMAPINFOHEADER),&bytes_written,NULL); WriteFile(file,pixels,bmpih.biSizeImage,&bytes_written,NULL); }
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
CreateCompatibleBitmap erstellt eine DDB, GetDIBits will ne DIB.
Wie du nen DC in ein file schreibst findest du hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39400.html