📄 guitest.c
字号:
#include "GUITEST.h"
#include "GUITEST.bid"
#include "guitest_res.h"
#define RES_FILE "guitest.bar"int AEEClsCreateInstance(AEECLSID ClsId, IShell * pIShell, IModule * po, void ** ppObj){ *ppObj = NULL; if(ClsId == AEECLSID_GUITEST_BID )
{ if(AEEApplet_New(sizeof(myapp_t), ClsId, pIShell, po, (IApplet**)ppObj, (AEEHANDLER)GUITEST_HandleEvent, (PFNFREEAPPDATA)GUITEST_CleanUp) == TRUE) { return (AEE_SUCCESS); } }
return (EFAILED);}static boolean GUITEST_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam){
ITimeCtl * pClock;
ITextCtl * pText; myapp_t * pApp = (myapp_t *)pi; AEEApplet * pMe = &pApp->a; switch (eCode) { case EVT_APP_START:
ISHELL_GetDeviceInfo (pMe->m_pIShell, &pApp->di);
IDISPLAY_ClearScreen (pMe->m_pIDisplay);
pApp->pIDate = NULL;
pApp->pIMenu = NULL;
pApp->pIStatic = NULL;
pApp->pIText = NULL;
pApp->pITime = NULL;
pApp->bDialog = FALSE;
GUITEST_BuildMainMenu(pApp);
IDISPLAY_Update (pMe->m_pIDisplay);
return(TRUE); break;
case EVT_COMMAND:
switch(wParam)
{
case MENUID_STATIC:
GUITEST_BuildStaticControl(pApp);
break;
case MENUID_TEXT:
GUITEST_BuildTextControl(pApp);
break;
case MENUID_DATE:
GUITEST_BuildDateControl(pApp);
break;
case MENUID_TIME:
GUITEST_BuildTimeControl(pApp);
break;
case MENUID_DIALOG:
GUITEST_BuildDialogScreen(pApp);
break;
}
return(TRUE);
break;
case EVT_KEY_PRESS:
if (pApp->pIMenu != NULL)
IMENUCTL_HandleEvent(pApp->pIMenu, EVT_KEY, wParam, 0);
else if (pApp->pIText != NULL)
{
ITEXTCTL_HandleEvent(pApp->pIText, EVT_KEY, wParam, 0);
ITEXTCTL_Redraw(pApp->pIText);
}
else if (pApp->pIDate != NULL)
{
IDATECTL_HandleEvent(pApp->pIDate, EVT_KEY, wParam, 0);
IDATECTL_Redraw(pApp->pIDate);
}
else if (pApp->pITime != NULL)
{
ITIMECTL_HandleEvent(pApp->pITime, EVT_KEY, wParam, 0);
ITIMECTL_Redraw(pApp->pITime);
}
return(TRUE);
break;
case EVT_DIALOG_START:
IDISPLAY_ClearScreen(pApp->a.m_pIDisplay);
pApp->pIDialog = (IDialog*)dwParam;
IDIALOG_SetEventHandler(pApp->pIDialog, (PFNAEEEVENT)GUITEST_DialogHandleEvent, (void*)pApp);
pClock = (ITimeCtl*)IDIALOG_GetControl(pApp->pIDialog, CTL_CLOCK);
pText = (ITextCtl*)IDIALOG_GetControl(pApp->pIDialog, CTL_TEXT);
ITEXTCTL_Redraw(pText);
ITIMECTL_Redraw(pClock);
IDISPLAY_Update(pApp->a.m_pIDisplay);
return(TRUE);
break;
case EVT_DIALOG_INIT:
return(TRUE);
break;
case EVT_DIALOG_END:
return(TRUE);
break; } return(FALSE);}
void GUITEST_BuildMainMenu(myapp_t* pApp)
{
//create the menu
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_MENUCTL, (void **)&pApp->pIMenu);
//set up the menu
IMENUCTL_SetTitle(pApp->pIMenu, RES_FILE, STR_MENUTITLE, NULL);
IMENUCTL_SetRect(pApp->pIMenu, NULL); //full-screen
//Add in our menu items
IMENUCTL_AddItem(pApp->pIMenu, RES_FILE, STR_MENUSTATIC, MENUID_STATIC, NULL, 0);
IMENUCTL_AddItem(pApp->pIMenu, RES_FILE, STR_MENUTEXT, MENUID_TEXT, NULL, 0);
IMENUCTL_AddItem(pApp->pIMenu, RES_FILE, STR_MENUDATE, MENUID_DATE, NULL, 0);
IMENUCTL_AddItem(pApp->pIMenu, RES_FILE, STR_MENUTIME, MENUID_TIME, NULL, 0);
IMENUCTL_AddItem(pApp->pIMenu, RES_FILE, STR_MENUDIALOG, MENUID_DIALOG, NULL, 0);
IMENUCTL_SetActive(pApp->pIMenu,TRUE);
}
void GUITEST_BuildStaticControl(myapp_t* pApp)
{
AEERect qrc;
AECHAR szTitle[32];
GUITEST_ClearGUI(pApp);
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_STATIC, (void **)&pApp->pIStatic);
//load up our text in a global buffer
ISHELL_LoadResString(pApp->a.m_pIShell, RES_FILE, STR_STATICCONTENT, pApp->szTextBuf, sizeof(pApp->szTextBuf));
//load up title text in our title character array
ISHELL_LoadResString(pApp->a.m_pIShell, RES_FILE, STR_STATICTITLE, szTitle, sizeof(szTitle));
//make dimensions of the control take up the entire screen
qrc.x = 0;
qrc.y = 0;
qrc.dx = pApp->di.cxScreen;
qrc.dy = pApp->di.cyScreen;
ISTATIC_SetRect(pApp->pIStatic, &qrc); //full screen
ISTATIC_SetText(pApp->pIStatic, szTitle, pApp->szTextBuf, AEE_FONT_BOLD, AEE_FONT_NORMAL);
//draw control
ISTATIC_Redraw(pApp->pIStatic);
}
void GUITEST_BuildTextControl(myapp_t* pApp)
{
AEERect qrc;
GUITEST_ClearGUI(pApp);
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_TEXTCTL, (void **)&pApp->pIText);
qrc.x = 0;
qrc.y = 50;
qrc.dx = pApp->di.cxScreen;
qrc.dy = qrc.y + 15;
ITEXTCTL_SetRect(pApp->pIText, &qrc);
ITEXTCTL_SetTitle(pApp->pIText, RES_FILE, STR_TEXTTITLE, NULL);
ITEXTCTL_SetActive(pApp->pIText, TRUE);
ITEXTCTL_Redraw(pApp->pIText);
}
void GUITEST_BuildDateControl(myapp_t* pApp)
{
AEERect qrc;
GUITEST_ClearGUI(pApp);
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_DATECTL, (void **)&pApp->pIDate);
qrc.x = 0;
qrc.y = 0;
qrc.dx = pApp->di.cxScreen;
qrc.dy = pApp->di.cyScreen;
IDATECTL_SetRect(pApp->pIDate, &qrc);
IDATECTL_SetActive(pApp->pIDate, TRUE);
IDATECTL_Redraw(pApp->pIDate);
}
void GUITEST_BuildTimeControl(myapp_t* pApp)
{
AEERect qrc;
GUITEST_ClearGUI(pApp);
ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_CLOCKCTL, (void **)&pApp->pITime);
qrc.x = 0;
qrc.y = 0;
qrc.dx = pApp->di.cxScreen;
qrc.dy = pApp->di.cyScreen;
ITIMECTL_SetRect(pApp->pITime, &qrc);
ITIMECTL_SetActive(pApp->pITime, TRUE);
ITIMECTL_Redraw(pApp->pITime);
}
void GUITEST_BuildDialogScreen(myapp_t* pApp)
{
GUITEST_ClearGUI(pApp);
pApp->bDialog = TRUE;
ISHELL_CreateDialog(pApp->a.m_pIShell, RES_FILE, DLG_TEST, NULL);
}
boolean GUITEST_DialogHandleEvent(void * pUser, AEEEvent evt, uint16 w, uint32 dw)
{
ITimeCtl * pClock;
ITextCtl * pText;
IDialog * pDialog = NULL;
myapp_t * pApp = (myapp_t *)pUser;
pClock = (ITimeCtl*)IDIALOG_GetControl(pApp->pIDialog, CTL_CLOCK);
pText = (ITextCtl*)IDIALOG_GetControl(pApp->pIDialog, CTL_TEXT);
switch (evt)
{
case EVT_KEY_PRESS:
ITEXTCTL_HandleEvent(pText, EVT_KEY, w, 0);
ITEXTCTL_Redraw(pText);
ITIMECTL_HandleEvent(pClock, EVT_KEY, w, 0);
ITIMECTL_Redraw(pClock);
return(TRUE);
break;
case EVT_COMMAND:
switch (w)
{
case CTL_CLOCK:
ITIMECTL_HandleEvent(pClock, EVT_KEY, w, 0);
ITIMECTL_Redraw(pClock);
break;
case CTL_TEXT:
ITEXTCTL_HandleEvent(pText, EVT_KEY, w, 0);
ITEXTCTL_Redraw(pText);
break;
}
return(TRUE);
break;
}
return(FALSE);
}
void GUITEST_ClearGUI(myapp_t* pApp)
{
ISHELL_EndDialog(pApp->a.m_pIShell);
if (pApp->pIMenu)
{
IMENUCTL_Release(pApp->pIMenu);
pApp->pIMenu = NULL;
}
if (pApp->pIStatic)
{
ISTATIC_Release(pApp->pIStatic);
pApp->pIStatic = NULL;
}
if (pApp->pIText)
{
ITEXTCTL_Release(pApp->pIText);
pApp->pIText = NULL;
}
if (pApp->pIDate)
{
IDATECTL_Release(pApp->pIDate);
pApp->pIDate = NULL;
}
if (pApp->pITime)
{
ITIMECTL_Release(pApp->pITime);
pApp->pITime = NULL;
}
}
void GUITEST_CleanUp(myapp_t* pApp)
{
GUITEST_ClearGUI(pApp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -