www.pudn.com > DIBDisplaycode.rar > DibImage.h


// DibImage.h: interface for the CDibImage class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_DIBIMAGE_H__254F3D1E_BB20_40DA_AE07_E8E0219DFA8C__INCLUDED_) 
#define AFX_DIBIMAGE_H__254F3D1E_BB20_40DA_AE07_E8E0219DFA8C__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
DECLARE_HANDLE(HDIB);		// DIB句柄 
#define PALVERSION   0x300	// DIB常量 
 
/* DIB宏 */ 
// 判断是否是Win 3.0的DIB 
#define IS_WIN30_DIB(lpbi)  ((*(LPDWORD)(lpbi)) == sizeof(BITMAPINFOHEADER)) 
// 计算矩形区域的宽度 
#define RECTWIDTH(lpRect)     ((lpRect)->right - (lpRect)->left) 
// 计算矩形区域的高度 
#define RECTHEIGHT(lpRect)    ((lpRect)->bottom - (lpRect)->top) 
 
// 在计算图像大小时,采用公式:biSizeImage = biWidth' × biHeight。 
// 是biWidth',而不是biWidth,这里的biWidth'必须是4的整倍数,表示 
// 大于或等于biWidth的,离4最近的整倍数。WIDTHBYTES就是用来计算 
// biWidth' 
#define WIDTHBYTES(bits)    (((bits) + 31) / 32 * 4) 
 
// Dib文件头标志(字符串"BM",写DIB时用到该常数) 
#define DIB_HEADER_MARKER   ((WORD) ('M' << 8) | 'B') 
 
class CDibImage   
{ 
	// Constructor and Destructor /////////////////////////////// 
public: 
	CDibImage(); 
	virtual ~CDibImage(); 
 
	// function ///////////////////////////////////////////////// 
public: 
	BOOL    PaintDIB (HDC, LPRECT, HDIB, LPRECT, CPalette* pPal); 
	BOOL    CreateDIBPalette(HDIB hDIB, CPalette* cPal); 
	LPSTR   FindDIBBits (LPSTR lpbi); 
	DWORD   DIBWidth (LPSTR lpDIB); 
	DWORD   DIBHeight (LPSTR lpDIB); 
	WORD    PaletteSize (LPSTR lpbi); 
	WORD    DIBNumColors (LPSTR lpbi); 
	HGLOBAL CopyHandle (HGLOBAL h); 
 
	BOOL    SaveDIB (HDIB hDib, CFile& file); 
	HDIB    ReadDIBFile(CFile& file); 
}; 
 
#endif // !defined(AFX_DIBIMAGE_H__254F3D1E_BB20_40DA_AE07_E8E0219DFA8C__INCLUDED_)