📄 cppapp.cpp
字号:
#include "cppapp.h"
#include "cppapp.bid"
#define TEST1 100
#define TEST2 101
#define TEST3 102
#define TEST4 103
#define TEST5 104
#define TEST6 105
#define TEST7 106
extern "C"
int AEEClsCreateInstance(AEECLSID clsID, IShell* pIShell, IModule* pIModule, void **ppobj)
{
if(clsID == AEECLSID_CPPAPP)
{
if(!AEEApplet_New(sizeof(CPPApp), clsID, pIShell, pIModule, (IApplet**)ppobj,(AEEHANDLER)CPPApp::HandleEvent,
(PFNFREEAPPDATA)CPPApp::freeAppData))
return EFAILED;
if (!CPPApp::InitAppData((IApplet *)*ppobj))
return EFAILED;
return SUCCESS;
}
return EFAILED;
}
boolean CPPApp::InitAppData(IApplet *pIApplet)
{
CPPApp* pCPPApp = (CPPApp*)pIApplet;
return pCPPApp->OnAppInitData();
}
void CPPApp::freeAppData(CPPApp *pCPPApp)
{
pCPPApp->OnAppfreeData();
}
boolean CPPApp::HandleEvent(CPPApp *pCPPApp, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
return pCPPApp->OnEvent(eCode, wParam, dwParam);
}
boolean CPPApp::OnAppInitData()
{
m_pIMenuCtl = NULL;
al_ = 0;
getSingleton<Allocator>();
th_ = new TempHeap;
return TRUE;
}
void CPPApp::OnAppfreeData()
{
if (m_pIMenuCtl)
IMENUCTL_Release(m_pIMenuCtl);
delete al_;
delete th_;
}
boolean CPPApp::OnEvent(AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
switch (eCode)
{
case EVT_APP_START:
if(ISHELL_CreateInstance(m_pIShell, AEECLSID_MENUCTL,
(void **)&m_pIMenuCtl) != SUCCESS)
return TRUE;
BuildMainMenu();
return(TRUE);
case EVT_KEY:
IMENUCTL_SetActive(m_pIMenuCtl, TRUE);
if (wParam == AVK_CLR)
return TRUE;
else
return IMENUCTL_HandleEvent(m_pIMenuCtl, EVT_KEY, wParam, dwParam);
case EVT_COMMAND:
switch(wParam)
{
case TEST1:
case TEST2:
case TEST3:
case TEST4:
case TEST5:
case TEST6:
case TEST7:
IMENUCTL_SetActive(m_pIMenuCtl, FALSE);
CPPUsage (wParam);
return TRUE;
default:
return FALSE;
}
case EVT_APP_STOP:
return(TRUE);
case EVT_APP_NO_SLEEP:
return TRUE;
default:
return(FALSE);
}
}
bool CPPApp::CPPUsage(uint16 wParam)
{
switch (wParam)
{
case TEST1:
{
test1();
break;
}
case TEST2:
{
test2();
break;
}
case TEST3:
{
test3();
break;
}
case TEST4:
{
test4();
break;
}
default:
return FALSE;
}
return TRUE;
}
void CPPApp::BuildMainMenu()
{
AEERect qrc;
AEEDeviceInfo di;
AECHAR* szBuf;
char* charBuf;
if (m_pIShell == NULL || m_pIMenuCtl == NULL)
return;
if ((szBuf = (AECHAR *) MALLOC(TEXT_BUFFER_SIZE)) == NULL)
return;
if ((charBuf = (char *) MALLOC(TEXT_BUFFER_SIZE/sizeof(AECHAR))) == NULL)
{
FREE(szBuf);
return;
}
STRCPY(charBuf, "Examples");
STR_TO_WSTR(charBuf, szBuf, TEXT_BUFFER_SIZE);
IMENUCTL_SetTitle(m_pIMenuCtl, NULL, 0, szBuf);
ISHELL_GetDeviceInfo(m_pIShell,&di);
qrc.x = 0;
qrc.y = 0;
qrc.dx = di.cxScreen;
qrc.dy = di.cyScreen;
IMENUCTL_SetRect(m_pIMenuCtl, &qrc);
STRCPY(charBuf, "1. Test1");
STR_TO_WSTR(charBuf, szBuf, TEXT_BUFFER_SIZE);
IMENUCTL_AddItem(m_pIMenuCtl, 0, 0, TEST1, szBuf, 0);
STRCPY(charBuf, "2. Test2");
STR_TO_WSTR(charBuf, szBuf, TEXT_BUFFER_SIZE);
IMENUCTL_AddItem(m_pIMenuCtl, 0, 0, TEST2, szBuf, 0);
STRCPY(charBuf, "3. Test3");
STR_TO_WSTR(charBuf, szBuf, TEXT_BUFFER_SIZE);
IMENUCTL_AddItem(m_pIMenuCtl, 0, 0, TEST3, szBuf, 0);
STRCPY(charBuf, "4. Test4");
STR_TO_WSTR(charBuf, szBuf, TEXT_BUFFER_SIZE);
IMENUCTL_AddItem(m_pIMenuCtl, 0, 0, TEST4, szBuf, 0);
IMENUCTL_SetActive(m_pIMenuCtl,TRUE);
FREE(szBuf);
FREE(charBuf);
}
void CPPApp::test1()
{
AutoPtr<Test> t0 (new Test(10));
int val0 = t0->getValueAt(6);
AutoPtr<AA> f0(new AA);
AutoPtr<AA> g0 (10);
int gs0 = g0[5].guess();
Allocator* a = CPPApp::getSingleton<Allocator>();
AutoPtr<Test> t (new(a) Test(10), a);
int val = t->getValueAt(7);
AutoPtr<AA> f(new(a) AA, a);
AutoPtr<AA> g (10, a);
int gs = g[8].guess();
Writer writer;
writer.WriteLine("Done");
}
void CPPApp::test2()
{
Allocator* a = CPPApp::getSingleton<Allocator>();
//AutoPtrPOD<AA> b (100, a ); //should fail
AutoPtrPOD<TST> b (100, a );
AutoPtrPOD<int> i (2, a );
AutoPtrPOD<char> c (100, a );
if (c)
{
STRCPY(c,"A VERY LONG STRING ALLOCATED FROM ALLOCATOR POOL");
char ch = c[5];
}
AutoPtrPOD<TST> b0 (100);
AutoPtrPOD<int> i0 (2 );
AutoPtrPOD<char> c0 (100);
if (c0)
{
STRCPY(c0,"A VERY LONG STRING ALLOCATED FROM HEAP");
char ch = c0[5];
}
Writer writer;
writer.WriteLine("Done");
}
void CPPApp::test3()
{
Writer writer;
writer.WriteLine("Unused");
}
void CPPApp::test4()
{
Writer writer;
writer.WriteLine("Unused");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -