Red de conocimiento informático - Material del sitio web - ¿Cómo escribir un programa en MFC para tomar una captura de pantalla de toda la pantalla y guardarla en formato bmp?

¿Cómo escribir un programa en MFC para tomar una captura de pantalla de toda la pantalla y guardarla en formato bmp?

El código se ve así. Hay varias funciones clave que deben leerse detenidamente. Si desea el código completo, haga clic aquí

CDC memDC;

CBitmap memBitmap, *pOldBitmap. ;

p>

CWindowDC dc(GetDesktopWindow());

memDC.CreateCompatibleDC(amp; dc);

int nWidth, nHeight; /p>

/* nWidth=GetSystemMetrics(SM_CXSCREEN);

nHeight= GetSystemMetrics(SM_CYSCREEN);*/

CRect rect;

GetDesktopWindow( )-gt; GetWindowRect(rect) ;

ClientToScreen(amp;rect);

nWidth=rect.SelectObject(amp;memBitmap);

// memDC.StretchBlt(0, 0, rect.Width(), rect.Height(), amp; dc, 0, 0, rect.BitBlt(0, 0, nWidth, nHeight, amp; dc, 0, 0, SRCCOPY)

BITMAPFILEHEADER BMFhead;

BITMAPINFOHEADER BMIhead

BMFhead.bfReserved1=0

BMFhead.bfReserved2=0; >

BMFhead.BMIhead. biSize=sizeof(BITMAPINFOHEADER);

BMIhead.biWidth=nAncho;

DWORD dwSize=nAncho*nAlto* 4;

BYTE *pData=new BYTE[ dwSize]

GetDIBits(memDC.m_hDC, (HBITMAP) memBitmap.m_hObject, 0, nHeight, pData, (LPBITMAPINFO) amp.BMIhead, DIB_RGB_COLORS

Archivo CFile;

file.Open("test.bmp", CFile::modeCreate | CFile::modeWrite);

file.Write(amp; BMFhead, sizeof(BITMAPFILEHEADER));

p>

File.Write(amp; BMFhead, sizeof(BITMAPFILEHEADER));

File.Write(amp; BMFhead, sizeof(BITMAPFILEHEADER)); ));