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

📄 guitest.c

📁 Brew Source code demo for 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 + -