方式一:使用GDI方式
hScrDC = CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
hMemDC
hMemDC = CreateCompatibleDC (hScrDC);
bmp.LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP1));
bmp.GetBitmap( & bmpInfo);
SelectObject(hMemDC,bmp);
BitBlt(hScrDC,0,0,dwWidth,dwHeight,hMemDC,0,0,SRCCOPY);
方式二:直接讀寫FrameBuffer
HINSTANCE hInst = (HINSTANCE)::GetModuleHandle(NULL);
HRSRC hrc = FindResource((HMODULE)hInst,MAKEINTRESOURCE(IDB_BITMAP1),RT_BITMAP);
HGLOBAL hGlobal = LoadResource(NULL,hrc);
dwBufSize = ::SizeofResource(NULL,hrc);
gbmpBuf = (PBYTE)::LockResource(hGlobal);
memcpy(gpLCDBuf,gbmpBuf,dwBufSize);
另外一種顯示圖檔方式:
bmi.bmih.biSize = sizeof(bmi.bmih);
bmi.bmih.biWidth = dwWidth;
bmi.bmih.biHeight = -dwHeight;
bmi.bmih.biPlanes = 1;
bmi.bmih.biBitCount = (BYTE)bmpInfo.bmBitsPixel;
bmi.bmih.biSizeImage = 0;
bmi.bmih.biXPelsPerMeter = 0;
bmi.bmih.biYPelsPerMeter = 0;
bmi.bmih.biClrUsed = 0;
bmi.bmih.biClrImportant = 0;
bmi.bmih.biCompression = BI_BITFIELDS;
*(DWORD *)(&bmi.rgq[0]) = 0xF800;
*(DWORD *)(&bmi.rgq[1]) = 0x07E0;
*(DWORD *)(&bmi.rgq[2]) = 0x001F;
StretchDIBits (hScrDC, 0, 0, dwWidth, dwHeight, 0, 0, dwWidth, dwHeight,
gbmpBuf, (PBITMAPINFO)&bmi, DIB_RGB_COLORS, SRCCOPY);
http://www.cnblogs.com/we-hjb/archive/2010/02/09/1666778.html