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

📄 baseview.cpp

📁 看到有兄弟提出的半透明算法
💻 CPP
字号:
// BaseView.cpp: implementation of the JFZBaseView class.
//
//////////////////////////////////////////////////////////////////////

#include "BaseView.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBaseView::CBaseView()
{

}

CBaseView::~CBaseView()
{

}

void CBaseView::OnResume()
{
	m_pDoc->SetExitTimer(false);
	OnTimer();
	
	return;
}

void CBaseView::OnSuspend()
{
	// 结束定时器标志
	m_pDoc->GetKeyControl()->InitData();
	m_pDoc->SetExitTimer(true);
	return;
}

void CBaseView::OnSetTimer()
{
	return;
}

void CBaseView::FreeData()
{
	//	m_pDoc = NULL;
}

void CBaseView::Release()
{
	FreeData();
	
	delete this;
}

void CBaseView::OnStartView()
{
	//	OnSetTimer();
}

void CBaseView::OnTimer()
{
	return;
}

bool CBaseView::OnInitData()
{
//	m_bSwitchView = false;
	
	return true;
}

void CBaseView::LoadBmpResData(IBitmap* pbmDbd, int nResID, int16 nWidth, int16 nHeight)
{
	uint8 czMapInfo[6] = {0};
	void * pSource = NULL;
	byte* pGround = NULL;
	uint32  nSize;
	int nOutSize = 0;

	pSource = ISHELL_LoadResDataEx (((CGameApp*)GETAPPINSTANCE())->m_pIShell, 
		EIDOLON_RES_FILE,nResID, RESTYPE_IMAGE, NULL, &nSize);

	m_pDoc->m_cUnzip.m_nInLength = nSize;
	
	if (pSource == NULL)
	{
		ISHELL_FreeResData (((CGameApp*)GETAPPINSTANCE())->m_pIShell, pSource);
		return;
	}

	nSize = *((uint16*)pSource);
	pGround = (byte* )pSource + nSize;
	m_pDoc->m_cUnzip.m_nInLength -= nSize;

	byte *pData = (byte* )MALLOC(m_pDoc->m_cUnzip.m_nInLength);
	MEMCPY(pData,(byte*)pGround, m_pDoc->m_cUnzip.m_nInLength);

	MEMCPY(czMapInfo,(byte*)pGround, 2);
	m_pDoc->m_cUnzip.textsize = ((int)czMapInfo[1] << 8) + (int)czMapInfo[0];

	byte* pp = NULL;
	m_pDoc->m_cUnzip.UnCompress(pData, m_pDoc->m_cUnzip.m_nInLength, pp, nOutSize);

	ISHELL_FreeResData (((CGameApp*)GETAPPINSTANCE())->m_pIShell, pSource);

	FREE(pData);

	AEEImageInfo tInfo;
	boolean bRealloc = FALSE;
	IBitmap* pB = (IBitmap* )CONVERTBMP(pp, &tInfo, &bRealloc);//FALSE);

	IBITMAP_BltIn(pbmDbd, 0, 0, nWidth, nHeight, pB,
			0, 0, AEE_RO_TRANSPARENT);

	m_pDoc->m_cUnzip.Release();

	if (pB)
	{
		SYSFREE(pB);
		pB = NULL;
	}
}

IBitmap* CBaseView::LoadBmpResData(int nResID)
{
	IBitmap* pbmDbd = NULL;
	uint8 czMapInfo[6] = {0};
	void * pSource = NULL;
	byte* pGround = NULL;
	uint32  nSize;
	int nOutSize = 0;

	pSource = ISHELL_LoadResDataEx (((CGameApp*)GETAPPINSTANCE())->m_pIShell, 
		EIDOLON_RES_FILE,nResID, RESTYPE_IMAGE, NULL, &nSize);

	m_pDoc->m_cUnzip.m_nInLength = nSize;
	
	if (pSource == NULL)
	{
		ISHELL_FreeResData (((CGameApp*)GETAPPINSTANCE())->m_pIShell, pSource);
		return NULL;;
	}

	nSize = *((uint16*)pSource);
	pGround = (byte* )pSource + nSize;
	m_pDoc->m_cUnzip.m_nInLength -= nSize;

	byte *pData = (byte* )MALLOC(m_pDoc->m_cUnzip.m_nInLength);
	MEMCPY(pData,(byte*)pGround, m_pDoc->m_cUnzip.m_nInLength);

	MEMCPY(czMapInfo,(byte*)pGround, 2);
	m_pDoc->m_cUnzip.textsize = ((int)czMapInfo[1] << 8) + (int)czMapInfo[0];

	byte* pp = NULL;
	m_pDoc->m_cUnzip.UnCompress(pData, m_pDoc->m_cUnzip.m_nInLength, pp, nOutSize);

	ISHELL_FreeResData (((CGameApp*)GETAPPINSTANCE())->m_pIShell, pSource);

	FREE(pData);

	AEEImageInfo tInfo;
	boolean bRealloc = FALSE;
	pbmDbd = (IBitmap* )CONVERTBMP(pp, &tInfo, &bRealloc);//FALSE);

	m_pDoc->m_cUnzip.Release();

	return pbmDbd;
}

⌨️ 快捷键说明

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