www.pudn.com > SDKSkin.rar > SkinBitMap.h


/**************************************************** 
**  Fujitsu Copyright (C) 2006 - 2007 
**	功    能:	从文件中读取位图文件 
 
**	文件名称: 	SkinBitMap.h 
**	文件基类:	 
**	扩 展 名:	h 
**	创建日期:	2006-8-6 18:27 
**	作    者:	汪荣 
*****************************************************/ 
 
#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4) // 计算图像每行象素所占的字节数目; 
 
/*bool LoadSkinBitMap(LPCTSTR stFilename,HBITMAP &m_DIB) 
{ 
	LOGPALETTE *pPal;//定义逻辑调色板指针; 
	pPal = new LOGPALETTE;//初始化该指针; 
 
	HANDLE f = CreateFile(stFilename, 
						  GENERIC_READ, 
						  FILE_SHARE_READ, 
						  NULL, 
						  OPEN_ALWAYS, 
						  FILE_ATTRIBUTE_NORMAL, 
						  NULL); 
 
	if (0 == f) 
	{ 
		return false; 
	} 
 
	BITMAPFILEHEADER bmfHeader;//定义位图文件头结构; 
	LPBITMAPINFO lpbmi; 
	DWORD dwBitsSize = 0; 
	HANDLE hDIB; 
	LPSTR pDIB;//指向位图数据的指针; 
	BITMAPINFOHEADER *bmhdr;//指向位图信息头结构的指针 
	dwBitsSize = GetFileSize(f,&dwBitsSize); 
	//dwBitsSize = file.GetLength();//得到文件长度 
	DWORD nReadedBytes = 0; 
	if(ReadFile(f,(LPVOID)&bmfHeader,sizeof(bmfHeader),&nReadedBytes,0) == 0 || 
	   nReadedBytes != sizeof(bmfHeader)) 
	{ 
		CloseHandle(f); 
		return false; 
	} 
	if(bmfHeader.bfType != 0x4d42) // 检查该文件是否为BMP格式的文件; 
	{ 
		CloseHandle(f); 
		return false; 
	} 
	hDIB = (HANDLE) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize); 
	 
	// 为读取图像文件数据申请缓冲区 
	if (hDIB == 0) 
	{ 
		CloseHandle(f); 
		return false; 
	} 
	pDIB = (LPSTR) ::GlobalLock((HGLOBAL)hDIB);  
	 
	// 得到申请的缓冲区的指针; 
	long dataLen = dwBitsSize - sizeof(BITMAPFILEHEADER); 
	if(ReadFile(f,pDIB,dataLen,&nReadedBytes,0) == 0 || 
	   nReadedBytes != dataLen) 
	{ 
		::GlobalUnlock((HGLOBAL)hDIB); 
		CloseHandle(f); 
		hDIB = NULL; 
		return false; 
	} 
	// 此时pDIB数据块中读取的数据包括位图头信息、位图颜色表、图像像素的灰度值; 
	bmhdr = (BITMAPINFOHEADER*)pDIB; // 为指向位图信息头结构的指针赋值; 
	::GlobalUnlock((HGLOBAL)hDIB); 
	m_DIB = (HBITMAP)hDIB; // 将内部变量数据赋于全局变量; 
	CloseHandle(f); 
	return true; 
}*/