[C++] Zrzuty ekranu

0

Witam

Wiem że były już takie tematy ale wszystkie odpowiedzi sa w Delphi a ja potrzebuje zrobic zrzut pulpitu w C++. Na pascalu ani Delphi niestety się nie znam mógłbyktoś mi "przetłumaczyć" ten kod na C++.

Pozdrawiam
Motoki

0

Tu jest przykładowy kod, który wyciąłem z jednego exampla. W całej aplikacji działa poprawnie - zrzut do bmp. Moze czegoś brakować, więc reszta należy do Ciebie :)

int w=GetSystemMetrics(SM_CXSCREEN), h=GetSystemMetrics(SM_CYSCREEN);
int bw=w/2, bh=h/2;
if (bw>320) bw=320;
if (bh>240) bh=240;
int bw4=(bw+3)&0xFFFFFFFC;
BITMAPINFO bi; bi.bmiHeader.biBitCount=24; bi.bmiHeader.biClrImportant=0;
bi.bmiHeader.biClrUsed=0; bi.bmiHeader.biCompression=BI_RGB; bi.bmiHeader.biHeight=bh;
bi.bmiHeader.biPlanes=1; bi.bmiHeader.biSize=40; bi.bmiHeader.biSizeImage=bw4bh3;
bi.bmiHeader.biWidth=bw4; bi.bmiHeader.biXPelsPerMeter=3780; bi.bmiHeader.biYPelsPerMeter=3780;
bi.bmiColors[0].rgbBlue=0; bi.bmiColors[0].rgbGreen=0; bi.bmiColors[0].rgbRed=0; bi.bmiColors[0].rgbReserved=0;
HDC sdc=GetDC(0); BYTE bits; HBITMAP hbm=CreateDIBSection(sdc,&bi,DIB_RGB_COLORS,(void*)&bits,NULL,0);
HDC hdc=CreateCompatibleDC(sdc); HGDIOBJ hold=SelectObject(hdc,hbm);
StretchBlt(hdc,0,0,bw,bh,sdc,0,0,w,h,SRCCOPY);
SelectObject(hdc,hold); DeleteDC(hdc); ReleaseDC(0,sdc);
//
hf=CreateFile(_T("\sample.bmp"),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
BITMAPFILEHEADER bfh; ZeroMemory(&bfh,sizeof(bfh));
bfh.bfType=0x4d42; bfh.bfOffBits=sizeof(BITMAPFILEHEADER)+bi.bmiHeader.biSize;
bfh.bfSize=bfh.bfOffBits+bi.bmiHeader.biSizeImage; bfh.bfReserved1=0; bfh.bfReserved2=0;
DWORD writ; WriteFile(hf, &bfh, sizeof(bfh), &writ, NULL);
WriteFile(hf, &bi.bmiHeader, sizeof(bi.bmiHeader), &writ, NULL);
WriteFile(hf, bits, bi.bmiHeader.biSizeImage, &writ, NULL);
CloseHandle(hf);
DeleteObject(hbm);
:) :) :) :)

0

A czy byłaby mozliwość udostępnienia całego example ?

Pozdrawiam

0

do tematu który napisał lightman
JAkiego typu jest hf

hf=CreateFile(_T("\\sample.bmp"),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

1 użytkowników online, w tym zalogowanych: 0, gości: 1