📄 pplogoview.cpp
字号:
// PPLogoView.cpp: implementation of the CPPLogoView class.
//
//////////////////////////////////////////////////////////////////////
#include "PPLogoView.h"
#include "PPKeyControl.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CPPLogoView::CPPLogoView()
{
}
CPPLogoView::CPPLogoView(CPPGameDoc* pDoc)
{
SetDocument(pDoc);
}
CPPLogoView::~CPPLogoView()
{
}
void CPPLogoView::OnStartView()
{
// 初始化对象
if (!OnInitData())
{
// Release();
return;
}
m_pDoc->SetCurView(this);
// 设置定时器
CALLBACK_Init(&m_cbTimer, (PFNNOTIFY)HandleTimer, this);
OnSetTimer();
}
// 处理定时器响应
void CPPLogoView::OnSetTimer()
{
// OnDraw(0);
// SetNextBmp();
// 设置定时器
SetTimer(TIME_VIEW, (PFNNOTIFY)(CPPLogoView::HandleTimer));
}
bool CPPLogoView::SetTimer(int32 dwInterval, PFNNOTIFY pfnCallback)
{
CPPGameApp* pApp = NULL;
BEGIN_CHECK
{
// 取app指针
CHECK_NULL(pApp, (CPPGameApp*) GETAPPINSTANCE());
CHECK_ERROR(ISHELL_SetTimerEx(pApp->m_pIShell, dwInterval, &m_cbTimer));
}
CATCH_CHECK
{
return false;
}
END_CHECK
return true;
}
void CPPLogoView::HandleTimer(void* pView)
{
((CPPLogoView* )pView)->OnTimer();
}
void CPPLogoView::OnTimer()
{
// 重新计算数据
if (m_pDoc == NULL)
return;
// 在Doc里处理按键事件
if (!m_pDoc->UpdateLogoView())
{
m_pDoc->SwitchView(ID_VIEW_MENU);
return;
}
// 获取应用程序指针
CPPGameApp* pApp = (CPPGameApp*) GETAPPINSTANCE();
if (pApp == NULL)
{
return;
}
// 如果到了1s,就换下一张图
if (m_nTimeCount >= 20)
{
m_nTimeCount = 0;
m_bNextBmp = true;
if (m_nCurBmpIndex < 3)
// if (m_nCurBmpIndex < 2)
{
m_bReload = true;
}
else
{
// 达到最后一张位图,停止定时器,返回
ExitView();
m_pDoc->SetExitTimer(false);
m_pDoc->SwitchView(ID_VIEW_MENU);
return;
}
}
else
m_nTimeCount++;
if (m_bReload)
{
// 根据更新数据画图
OnDraw(m_nCurBmpIndex);
SetNextBmp();
m_bReload = false;
}
BEGIN_CHECK
{
// 取app指针
CHECK_NULL(pApp, (CPPGameApp*) GETAPPINSTANCE());
CHECK_ERROR(ISHELL_SetTimerEx(pApp->m_pIShell, TIME_VIEW, &m_cbTimer));
}
CATCH_CHECK
{
return;
}
END_CHECK
}
bool CPPLogoView::OnInitData()
{
BEGIN_CHECK
{
CHECK_NULL(m_pBitmap[EMONTERNET_INDEX], CPPBitmap::CreateInstance());
CHECK_NULL(m_pBitmap[EBOX_INDEX], CPPBitmap::CreateInstance());
CHECK_NULL(m_pBitmap[ESTART_INDEX], CPPBitmap::CreateInstance());
CHECK_FALSE(LoadLogoBmpRes());
}
CATCH_CHECK
{
CUSTOM_RELEASE(m_pBitmap[EMONTERNET_INDEX]);
CUSTOM_RELEASE(m_pBitmap[EBOX_INDEX]);
CUSTOM_RELEASE(m_pBitmap[ESTART_INDEX]);
}
END_CHECK
m_nCurBmpIndex = 0;
m_nTimeCount = 0;
m_bNextBmp = true;
m_bReload = false;
// 将键盘按键全部清空
m_pDoc->GetKeyControl()->InitData();
return true;
}
boolean CPPLogoView::IsSwitchBmp()
{
return m_bNextBmp;
}
void CPPLogoView::SetNextBmpStatus(boolean bNextBmp)
{
m_bNextBmp = bNextBmp;
}
void CPPLogoView::SetNextBmp()
{
m_nCurBmpIndex++;
}
void CPPLogoView::OnDraw(int nCurBmp)
{
CPPGameApp* pApp = NULL;
BEGIN_CHECK
{
// 取app指针
CHECK_NULL(pApp, (CPPGameApp*) GETAPPINSTANCE());
}
CATCH_CHECK
{
return;
}
END_CHECK
m_pBitmap[m_nCurBmpIndex]->Draw(0, 0, EDD_ALIGN_TOP | EDD_ALIGN_LEFT);
}
void CPPLogoView::ExitView()
{
// 结束定时器标志
m_pDoc->SetExitTimer(true);
// 不切换下一张位图
m_bNextBmp = false;
// 结束定时器
CALLBACK_Cancel(&m_cbTimer);
// 释放位图资源
CUSTOM_RELEASE(m_pBitmap[EMONTERNET_INDEX]);
CUSTOM_RELEASE(m_pBitmap[EBOX_INDEX]);
CUSTOM_RELEASE(m_pBitmap[ESTART_INDEX]);
// m_pDoc->SwitchView(ID_VIEW_MENU);
}
boolean CPPLogoView::LoadLogoBmpRes()
{
BEGIN_CHECK
{
// 加载位图资源
CHECK_ERROR(m_pBitmap[EMONTERNET_INDEX]->Load(IDB_MONTERNET));
CHECK_ERROR(m_pBitmap[EBOX_INDEX]->Load(IDB_BOX));
CHECK_ERROR(m_pBitmap[ESTART_INDEX]->Load(IDB_START));
}
CATCH_CHECK
{
CUSTOM_RELEASE(m_pBitmap[EMONTERNET_INDEX]);
CUSTOM_RELEASE(m_pBitmap[EBOX_INDEX]);
CUSTOM_RELEASE(m_pBitmap[ESTART_INDEX]);
return false;
}
return true;
}
//void CPPLogoView::Release()
//{
// delete this;
//}
void CPPLogoView::FreeResourse()
{
// 结束定时器标志
m_pDoc->SetExitTimer(false);
// 结束定时器
CALLBACK_Cancel(&m_cbTimer);
// 释放位图资源
CUSTOM_RELEASE(m_pBitmap[EMONTERNET_INDEX]);
CUSTOM_RELEASE(m_pBitmap[EBOX_INDEX]);
CUSTOM_RELEASE(m_pBitmap[ESTART_INDEX]);
}
void CPPLogoView::OnSuspend()
{
// 结束定时器
CALLBACK_Cancel(&m_cbTimer);
// // 释放资源
CPPBaseView::OnSuspend();
}
void CPPLogoView::OnResume()
{
CPPBaseView::OnResume();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -