HANDLE hBitmap = LoadImage(NULL, sBitmapFileName, IMAGE_BITMAP,0, 0,
LR_LOADFROMFILE);
LR_LOADFROMFILE);
解决方案 »
- 关于工作线程中使用定时器的问题?
- 在Dialog 中除了OnCancel()可关闭自身外还有其他函数吗??
- 加速键问题 ?????????????
- 怎样解决这个问题?(不好意思,系统最多只让我给20分)
- 导出DLL 问题(老大难)
- 高手请帮忙!!!急!!
- VC++中能不能在编译时指出那一行出错。
- 在CListCtrl中,点击选中某一行和点击空白处都产生LVN_CHANGED,如何区别?
- 如何删除回收站里面的指定文件
- GDAL读取raw格式文件的问题,求助大神们!!!
- 参数在哪(CallBack)?
- 如何从一个 thread 的 ID 号得到相应的 thread 句柄(handle) 300 分!
The following code uses the LoadImage API to load the bitmap as a DIBSection, and then creates a palette from the DIBSection's color table. If no color table is present, a halftone palette is used:
BITMAP bm; *phBitmap = NULL;
*phPalette = NULL; // Use LoadImage() to get the image loaded into a DIBSection
*phBitmap = (HBITMAP)LoadImage( NULL, szFileName, IMAGE_BITMAP, 0, 0,
LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE );
if( *phBitmap == NULL )
return FALSE; // Get the color depth of the DIBSection
GetObject(*phBitmap, sizeof(BITMAP), &bm );
// If the DIBSection is 256 color or less, it has a color table
if( ( bm.bmBitsPixel * bm.bmPlanes ) <= 8 )
{
HDC hMemDC;
HBITMAP hOldBitmap;
RGBQUAD rgb[256];
LPLOGPALETTE pLogPal;
WORD i; // Create a memory DC and select the DIBSection into it
hMemDC = CreateCompatibleDC( NULL );
hOldBitmap = (HBITMAP)SelectObject( hMemDC, *phBitmap );
// Get the DIBSection's color table
GetDIBColorTable( hMemDC, 0, 256, rgb );
// Create a palette from the color tabl
pLogPal = (LOGPALETTE *)malloc( sizeof(LOGPALETTE) + (256*sizeof(PALETTEENTRY)) );
pLogPal->palVersion = 0x300;
pLogPal->palNumEntries = 256;
for(i=0;i<256;i++)
{
pLogPal->palPalEntry[i].peRed = rgb[i].rgbRed;
pLogPal->palPalEntry[i].peGreen = rgb[i].rgbGreen;
pLogPal->palPalEntry[i].peBlue = rgb[i].rgbBlue;
pLogPal->palPalEntry[i].peFlags = 0;
}
*phPalette = CreatePalette( pLogPal );
// Clean up
free( pLogPal );
SelectObject( hMemDC, hOldBitmap );
DeleteDC( hMemDC );
}
else // It has no color table, so use a halftone palette
{
HDC hRefDC; hRefDC = GetDC( NULL );
*phPalette = CreateHalftonePalette( hRefDC );
ReleaseDC( NULL, hRefDC );
}
return TRUE;
The following code demonstrates how to use the LoadBitmapFromBMPFile function:
PAINTSTRUCT ps;
HBITMAP hBitmap, hOldBitmap;
HPALETTE hPalette, hOldPalette;
HDC hDC, hMemDC;
BITMAP bm;
GetObject( hBitmap, sizeof(BITMAP), &bm );
hMemDC = CreateCompatibleDC( hDC );
hOldBitmap = (HBITMAP)SelectObject( hMemDC, hBitmap );
hOldPalette = SelectPalette( hDC, hPalette, FALSE );
RealizePalette( hDC ); BitBlt( hDC, 0, 0, bm.bmWidth, bm.bmHeight,
hMemDC, 0, 0, SRCCOPY ); SelectObject( hMemDC, hOldBitmap );
DeleteObject( hBitmap );
SelectPalette( hDC, hOldPalette, FALSE );
DeleteObject( hPalette ); }
m_bitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),
"welcome.bmp",
IMAGE_BITMAP,
0,0,
LR_LOADFROMFILE );