📄 ppgameapp.cpp
字号:
// PPGameApp.cpp: implementation of the CPPGameApp class.
//
//////////////////////////////////////////////////////////////////////
#include "PPGameApp.h"
#include "PPGameDoc.h"
#include "PPBaseView.h"
#include "PPLogoView.h"
#include "PPMenuView.h"
#include "PPAboutView.h"
#include "PPHelpView.h"
#include "PPOverView.h"
#include "PPSetView.h"
#include "PPGameView.h"
#include "PPGameDoc.h"
#include "PPKeyControl.h"
#include "PPBitmap.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//CPPGameApp::CPPGameApp()
//{
//
//}
//
//CPPGameApp::~CPPGameApp()
//{
//
//}
extern "C" {
int AEEClsCreateInstance(AEECLSID ClsId, IShell* pIShell, IModule* po, void ** ppObj)
{
*ppObj = NULL;
if (ClsId == AEECLSID_PP)
{
// 创建小应用程序
if (!AEEApplet_New(sizeof(CPPGameApp), ClsId, pIShell, po, (IApplet**)ppObj,
(AEEHANDLER)CPPGameApp::HandleEvent, (PFNFREEAPPDATA)CPPGameApp::FreeData)
== TRUE)
{
return EFAILED;
}
// 初始化数据
if (!CPPGameApp::InitAppData((IApplet*)*ppObj))
{
return EFAILED;
}
// Add your code here .....
return AEE_SUCCESS;
}
return (EFAILED);
}
} // end of extern "C"
boolean CPPGameApp::HandleEvent(CPPGameApp* pApp, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
return pApp->OnEvent(eCode, wParam, dwParam);
}
void CPPGameApp::FreeData(CPPGameApp* pApp)
{
pApp->Release();
}
boolean CPPGameApp::InitAppData(IApplet* pIApplet)
{
CPPGameApp* pApp = (CPPGameApp*) pIApplet;
return pApp->InitData();
}
void CPPGameApp::Release()
{
// 释放出是分配的资源
if (m_pDoc)
{
// 释放视图
m_pDoc->ReleaseView();
// 视图置为空
m_pDoc->SetCurView(NULL);
// 释放控制器
if (m_pDoc->GetKeyControl())
{
m_pDoc->GetKeyControl()->Release();
m_pDoc->SetControl(NULL);
}
// 释放文档
m_pDoc->Release();
m_pDoc = NULL;
}
// 释放应用程序堆
IRELEASE(m_pIHeap, HEAP);
}
boolean CPPGameApp::InitData()
{
// 类成员设置缺省值
// m_pDoc = NULL;
m_pIHeap = NULL;
BEGIN_CHECK
{
// 创建应用程序堆
CHECK_ERROR(ISHELL_CreateInstance(m_pIShell, AEECLSID_HEAP, (void**)&m_pIHeap));
// 创建文档模板
CHECK_FALSE(CreateDocumentTemplate());
}
CATCH_CHECK
{
// 创建失败
IRELEASE(m_pIHeap, HEAP);
return FALSE;
}
END_CHECK
// 获取文件声音配置数据
GetSoundCfgData();
return TRUE;
}
boolean CPPGameApp::OnEvent(AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
switch (eCode)
{
case EVT_APP_START:
{
m_pDoc->m_pLogoView = new CPPLogoView(m_pDoc);
// 设置文档关联对象,开始时设置当前视图为开始
m_pDoc->SetLogoView(m_pDoc->m_pLogoView);
m_pDoc->m_pLogoView->OnStartView();
}
return true;
case EVT_KEY_PRESS:
return m_pDoc->GetKeyControl()->HandleKeyPress(eCode, wParam, dwParam);
// case EVT_KEY_RELEASE:
// return m_pDoc->GetControl()->HandleKeyRelease(eCode, wParam, dwParam);
case EVT_APP_STOP:
return true;
case EVT_APP_SUSPEND:
m_pDoc->GetCurView()->OnSuspend();
return true;
case EVT_APP_RESUME:
{
m_pDoc->GetCurView()->OnResume();
return true;
}
case EVT_APP_NO_SLEEP:// 禁止节电模式
return true;
default:
break;
}
return false;
}
boolean CPPGameApp::CreateDocumentTemplate()
{
CPPGameDoc* pDoc = NULL;
CPPKeyControl* pControl = NULL;
BEGIN_CHECK
{
// 创建文档
CHECK_NULL(pDoc, CPPGameDoc::CreateInstance());
// 创建控制器
CHECK_NULL(pControl, CPPKeyControl::CreateInstance(pDoc));
}
CATCH_CHECK
{
// 创建失败
CUSTOM_RELEASE(pDoc);
CUSTOM_RELEASE(pControl);
return FALSE;
}
END_CHECK
pDoc->SetControl(pControl);
// 记录文档指针
m_pDoc = pDoc;
pDoc->SetApp(this);
// 创建成功
return true;
}
void CPPGameApp::GetSoundCfgData()
{
IFileMgr* pIFileMgr = NULL; // 文件接口
IFile* pIFile; // 文件操作借口
BEGIN_CHECK
{
// 创建文件接口
CHECK_ERROR(ISHELL_CreateInstance(m_pIShell, AEECLSID_FILEMGR, (void**)&pIFileMgr));
}
CATCH_CHECK
{
IRELEASE(pIFileMgr, FILEMGR);
return;
}
END_CHECK
// 文件不存在,创建文件
if (IFILEMGR_Test(pIFileMgr, SOUND_CFG_FILE) == SUCCESS)
{
// 打开排行榜文件
pIFile = IFILEMGR_OpenFile(pIFileMgr, SOUND_CFG_FILE, _OFM_READWRITE);
if (pIFile == NULL)
{
IRELEASE(pIFileMgr, FILEMGR);
return;
}
// 将原始数据读出
IFILE_Read(pIFile, &m_tOpenSound, sizeof(SOUNDCFG));
// 关闭文件
// IFILE_Release(pIFile);
IRELEASE(pIFile, FILE);
}
else
{
pIFile = IFILEMGR_OpenFile(pIFileMgr, SOUND_CFG_FILE, _OFM_CREATE);
if (pIFile == NULL)
{
IRELEASE(pIFileMgr, FILEMGR);
return;
}
m_tOpenSound.bOpenSound = false;
IFILE_Write(pIFile, &m_tOpenSound, sizeof(SOUNDCFG));
// 关闭文件
// IFILE_Release(pIFile);
IRELEASE(pIFile, FILE);
}
IRELEASE(pIFileMgr, FILEMGR);
}
bool CPPGameApp::GetSoundCfg()
{
return m_tOpenSound.bOpenSound;
}
void CPPGameApp::SetSoundCfgData(bool bOpenSound)
{
m_tOpenSound.bOpenSound = bOpenSound;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -