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

📄 aboutview.cpp

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

#include "AboutView.h"

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

CAboutView::CAboutView()
{

}

CAboutView::CAboutView(CGameDoc* pDoc)
{
	SetDocument(pDoc);
}

CAboutView::~CAboutView()
{

}

bool CAboutView::OnInitData()
{
	LoadAboutHtml();

	// 将键盘按键全部清空
	m_pDoc->GetKeyControl()->InitData();

	m_nTextIndex = 0;

	return true;
}

void CAboutView::OnResume()
{
	CBaseView::OnResume();
}

void CAboutView::OnSetTimer()
{
	// 设置定时器
	SetTimer(TIME_VIEW, (PFNNOTIFY)(CAboutView::HandleTimer));
}

void CAboutView::OnStartView()
{
	// 初始化对象
	if (!OnInitData())
	{
		Release();
		return;
	}

	m_pDoc->SetCurView(this);

	// 将定时器与回调函数关联
	CALLBACK_Init(&m_cbTimer, (PFNNOTIFY)HandleTimer, this);
	
	OnSetTimer();
}

void CAboutView::OnSuspend()
{
	// 结束定时器
	CALLBACK_Cancel(&m_cbTimer);
	
	// 释放资源
	CBaseView::OnSuspend();
}

void CAboutView::OnTimer()
{
	// 重新计算数据
	if (m_pDoc == NULL)
		return;
	
	// 在Doc里处理按键事件
	if (!m_pDoc->UpdateAboutView())
		return;

	CGameApp* pApp = NULL;
	// 获取应用程序指针
	BEGIN_CHECK
	{
		// 取app指针
		CHECK_NULL(pApp, (CGameApp*) GETAPPINSTANCE());
		CHECK_ERROR(ISHELL_SetTimerEx(pApp->m_pIShell, TIME_VIEW, &m_cbTimer));
	}
	CATCH_CHECK
	{
		return;
	}
	END_CHECK
}

void CAboutView::HandleTimer(void* pView)
{
	((CAboutView* )pView)->OnTimer();
}

bool CAboutView::SetTimer(int32 dwInterval, PFNNOTIFY pfnCallback)
{
	CGameApp* pApp = NULL;

	BEGIN_CHECK
	{
		// 取app指针
		CHECK_NULL(pApp, (CGameApp*) GETAPPINSTANCE());
		CHECK_ERROR(ISHELL_SetTimerEx(pApp->m_pIShell, dwInterval, &m_cbTimer));
	}
	CATCH_CHECK
	{
		return false;
	}
	END_CHECK

	return true;
}

void CAboutView::FreeResourse()
{
	// 设置定时器结束标志
	m_pDoc->SetExitTimer(true);

	if (m_pHtmlView)
	{
		IHTMLVIEWER_Release(m_pHtmlView);
		m_pHtmlView = NULL;
	}

	// 结束定时器
	CALLBACK_Cancel(&m_cbTimer);
}

void CAboutView::ExitView()
{
	// 设置定时器结束标志
	m_pDoc->SetExitTimer(true);
	
	// 结束定时器
	CALLBACK_Cancel(&m_cbTimer);

	m_pDoc->SwitchView(ID_VIEW_MENU);
}

void CAboutView::LoadAboutHtml()
{
	void * pSource = NULL;
	char* pGround = NULL;
	uint32  nSize;
	uint16 nOffset = 0;
	pSource = ISHELL_LoadResDataEx (((CGameApp*)GETAPPINSTANCE())->m_pIShell, 
				EIDOLON_RES_FILE, IDHTML_ABOUTTEXT, RESTYPE_IMAGE, NULL, &nSize);

	if (pSource == NULL)
	{
		ISHELL_FreeResData(((CGameApp*)GETAPPINSTANCE())->m_pIShell, pSource);
		return;
	}

	nOffset = *((uint16*)pSource);
	pGround = (char* )pSource + nOffset;
	
	if (ISHELL_CreateInstance(((CGameApp*)GETAPPINSTANCE())->m_pIShell,
				AEECLSID_HTML, (void** )&m_pHtmlView) != SUCCESS)
		return;

	AEERect rect;
	// IHTMLVIEWER_SetProperties(m_pHtmlView, HVP_SCROLLBAR);
	IHTMLVIEWER_SetProperties(m_pHtmlView, 0);
	IHTMLVIEWER_SetVSpace(m_pHtmlView, 12);
	IHTMLVIEWER_SetSBWidth(m_pHtmlView,12);
	SETAEERECT(&rect,0,0,BACKGROUND_WIDTH,BACKGROUND_HEIGTH);
	IHTMLVIEWER_SetRect(m_pHtmlView,&rect);
	IHTMLVIEWER_SetData(m_pHtmlView,pGround, nSize-nOffset);
	IHTMLVIEWER_Redraw(m_pHtmlView);

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

⌨️ 快捷键说明

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