Unersichtlicher fehler
-
Hallo,
folgender code liefert fehler die ihr weiter unten findet.
Verstehen tue ich sie nicht. Ihr?#include <iostream> #include <windows.h> using namespace std; int main() { // get desktop window (but can be any window) HWND capture = GetDesktopWindow(); if(!IsWindow(capture)) return 1; // get window dimensions RECT rect; GetWindowRect(capture, &rect); size_t dx = rect.right - rect.left; size_t dy = rect.bottom - rect.top; // create BITMAPINFO structure // used by CreateDIBSection BITMAPINFO info; info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); info.bmiHeader.biWidth = dx; info.bmiHeader.biHeight = dy; info.bmiHeader.biPlanes = 1; info.bmiHeader.biBitCount = 24; info.bmiHeader.biCompression = BI_RGB; info.bmiHeader.biSizeImage = 0; info.bmiHeader.biXPelsPerMeter = 0; info.bmiHeader.biYPelsPerMeter = 0; info.bmiHeader.biClrUsed = 0; info.bmiHeader.biClrImportant = 0; // a bitmap handle and a pointer its bit data HBITMAP bitmap = 0; BYTE* memory = 0; // create bitmap HDC device = GetDC(capture); bitmap = CreateDIBSection(device, &info, DIB_RGB_COLORS, (void**)&memory, 0, 0); ReleaseDC(capture, device); if(!bitmap || !memory) return 1; // blit the contents of the desktop (winDC) // to the bitmap (selected in memDC) HDC winDC = GetWindowDC(capture); HDC memDC = CreateCompatibleDC(winDC); SelectObject(memDC, bitmap); BitBlt(memDC, 0, 0, dx, dy, winDC, 0, 0, SRCCOPY); DeleteDC(memDC); ReleaseDC(capture, winDC); char *buffer; sprintf(buffer,"capture%d%d.bmp",dx,dy); // create bitmap file basic_ofstream<char> file(buffer, ios::binary); if(!file) { DeleteObject(bitmap); return 1; } // initialize bitmap file headers BITMAPFILEHEADER fileHeader; BITMAPINFOHEADER infoHeader; fileHeader.bfType = 0x4d42; fileHeader.bfSize = 0; fileHeader.bfReserved1 = 0; fileHeader.bfReserved2 = 0; fileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); infoHeader.biSize = sizeof(infoHeader); infoHeader.biWidth = dx; infoHeader.biHeight = dy; infoHeader.biPlanes = 1; infoHeader.biBitCount = 24; infoHeader.biCompression = BI_RGB; infoHeader.biSizeImage = 0; infoHeader.biXPelsPerMeter = 0; infoHeader.biYPelsPerMeter = 0; infoHeader.biClrUsed = 0; infoHeader.biClrImportant = 0; // save file headers file.write((char*)&fileHeader, sizeof(fileHeader)); file.write((char*)&infoHeader, sizeof(infoHeader)); // save 24-bit bitmap data int wbytes = (((24*dx + 31) & (~31))/8); int tbytes = (((24*dx + 31) & (~31))/8)*dy; file.write((char*)memory, tbytes); // delete bitmap DeleteObject(bitmap); bitmap = 0; memory = 0; return 0; }In function
int main()':| main.cpp|56|error: variablestd::basic_ofstream<char, std::char_traits<char> > file' has initializer but incomplete type|
warning: unused variable 'wbytes'|
||=== Build finished: 1 errors, 1 warnings ===|
-
#include <fstream>