⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mydib.cpp

📁 战场登陆器vc++源代码很好用的哦精彩精彩
💻 CPP
字号:
//MYDIB.CPP BMP 拳老阑 免仿窍绰 努贰胶
//#include <afx.h>
//#include <AfxWin.h>
#include <windows.h>
#include <stdio.h>
#include "mydib.h"

// KRN 颇老肺何磐 努贰胶 按眉甫 积己茄促.
CMyDib::CMyDib(char *szFilename, unsigned long dwFilePointer)
{
	BITMAPFILEHEADER fh; //bmp 拳老狼 庆歹
	m_lpDib = NULL;		//捞固瘤 器牢磐客 滚欺甫 null肺 汲沥茄促.
	HANDLE hFileRead;
	DWORD nCount;
	char PathName[28];
	wsprintf( PathName, "sprites\\%s.pak", szFilename );
	hFileRead = CreateFile(PathName, GENERIC_READ, NULL, NULL, OPEN_EXISTING, NULL, NULL);
	SetFilePointer(hFileRead, dwFilePointer, NULL, FILE_BEGIN);
	ReadFile(hFileRead, (char *)&fh, 14, &nCount, NULL);//sizeof(bmpHeader)==14
	m_lpDib = (LPSTR)new char[fh.bfSize-14];
	ReadFile(hFileRead, (char *)m_lpDib, fh.bfSize-14, &nCount, NULL);
	CloseHandle(hFileRead);
	LPBITMAPINFOHEADER bmpInfoHeader = (LPBITMAPINFOHEADER)m_lpDib;
	m_bmpInfo = (LPBITMAPINFO)m_lpDib;
	m_wWidthX = (WORD)(bmpInfoHeader->biWidth);
	m_wWidthY = (WORD)(bmpInfoHeader->biHeight);
	if (bmpInfoHeader->biClrUsed == 0)
	{
		if(bmpInfoHeader->biBitCount == 24) m_wColorNums = 0;
		else if(bmpInfoHeader->biBitCount == 8) m_wColorNums = 256;
		else if(bmpInfoHeader->biBitCount == 1) m_wColorNums = 2;
		else if(bmpInfoHeader->biBitCount == 4) m_wColorNums = 16;
		else m_wColorNums = 0;
	}
	else m_wColorNums = (WORD)(bmpInfoHeader->biClrUsed);
}

CMyDib::~CMyDib()
{
	if(m_lpDib != NULL) delete[] m_lpDib;
}

void CMyDib::PaintImage(HDC hDC)
{
	if (m_lpDib == NULL) return;
	SetDIBitsToDevice(hDC, 0, 0, m_wWidthX, m_wWidthY, 0, 0, 0, m_wWidthY, m_lpDib + *(LPDWORD)m_lpDib + 4*m_wColorNums, m_bmpInfo, DIB_RGB_COLORS);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -