📄 helloworld.c
字号:
/*===========================================================================
FILE: helloworld.c
===========================================================================*/
/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#include "AEEModGen.h" // Module interface definitions
#include "AEEAppGen.h" // Applet interface definitions
#include "AEEShell.h" // Shell interface definitions
#include "AEEStdLib.h"
#include "helloworld.bid"
#include "helloworld.brh"
#include "AEEGraphics.h"
/*-------------------------------------------------------------------
Applet structure. All variables in here are reference via "pMe->"
-------------------------------------------------------------------*/
// create an applet structure that's passed around. All variables in
// here will be able to be referenced as static.
typedef struct _helloworld {
AEEApplet a ; // First element of this structure must be AEEApplet
AEEDeviceInfo DeviceInfo; // always have access to the hardware device information
IDisplay *pIDisplay; // give a standard way to access the Display interface
IShell *pIShell; // give a standard way to access the Shell interface
// add your own variables here...
} helloworld;
/*-------------------------------------------------------------------
Function Prototypes
-------------------------------------------------------------------*/
static boolean helloworld_HandleEvent(helloworld* pMe, AEEEvent eCode,
uint16 wParam, uint32 dwParam);
boolean helloworld_InitAppData(helloworld* pMe);
void helloworld_FreeAppData(helloworld* pMe);
/*===============================================================================
FUNCTION DEFINITIONS
=============================================================================== */
int AEEClsCreateInstance(AEECLSID ClsId, IShell *pIShell, IModule *po, void **ppObj)
{
*ppObj = NULL;
if( ClsId == AEECLSID_HELLOWORLD )
{
if( AEEApplet_New(sizeof(helloworld),
ClsId,
pIShell,
po,
(IApplet**)ppObj,
(AEEHANDLER)helloworld_HandleEvent,
(PFNFREEAPPDATA)helloworld_FreeAppData) ) // the FreeAppData function is called after sending EVT_APP_STOP to the HandleEvent function
{
if(helloworld_InitAppData((helloworld*)*ppObj))
{
//Data initialized successfully
return(AEE_SUCCESS);
}
else
{
//Release the applet. This will free the memory allocated for the applet when
// AEEApplet_New was called.
IAPPLET_Release((IApplet*)*ppObj);
return EFAILED;
}
} // end AEEApplet_New
}
return(EFAILED);
}
static boolean helloworld_HandleEvent(helloworld* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
AECHAR szText[]={'H','e','l','l','o','W','o','r','l','d','\0'};
//AECHAR sz[100];
AEECallback update;
AEERect pRect;
IGraphics *pIGra;
AEEPoint point;
AEECircle circle;
AEEEllipse ellipise;//这里声明graphics有关参数
AECHAR * mystring = L"北京欢迎你!";
AECHAR * newstring;
AECHAR * colorchange = L"颜色已经改变";
AECHAR * menu = L"1.music 2.change color 3.new rect";
AECHAR hs[100] = {0};
AECHAR format[] = {'%','0','2','d',':','%','d',':','%','d',0};
uint32 resSize;
int k,s,ti,hd,md,sd;
switch (eCode)
{
case EVT_APP_START:
point.x=10;point.y=10;circle.cx=100;circle.cy=140;circle.r=10;
ellipise.cx=50;ellipise.cy=140;ellipise.wx=10;ellipise.wy=40;
ISHELL_CreateInstance(pMe->pIShell,
AEECLSID_GRAPHICS,
(void**) &pIGra);
IGRAPHICS_ClearViewport(pIGra);
IGRAPHICS_DrawPoint(pIGra,&point);
IGRAPHICS_SetFillColor(pIGra,255,0,0,0);
IGRAPHICS_SetColor(pIGra,0,255,0,0);
IGRAPHICS_SetFillMode(pIGra,TRUE);
IGRAPHICS_DrawCircle(pIGra,&circle);//画个圆
IGRAPHICS_DrawEllipse(pIGra,&ellipise);//画个椭圆
IGRAPHICS_SetStrokeStyle(pIGra,STROKE_DOTTED);
//IGRAPHICS_Update(pIGra);
IGRAPHICS_Release(pIGra);
ISHELL_GetResSize(pMe->pIShell,
HELLOWORLD_RES_FILE,
IDS_STRING_1001,
RESTYPE_STRING,
&resSize);
newstring = (AECHAR *) MALLOC(resSize);
ISHELL_LoadResString(pMe->pIShell,
HELLOWORLD_RES_FILE,
IDS_STRING_1001,
newstring,
resSize);
ISHELL_SetTimerEx (pMe->pIShell,
10000,
NULL);/////////////////////////////
IDISPLAY_DrawText(pMe->pIDisplay,
AEE_FONT_BOLD,
newstring,
-1,
10,
120,
NULL,
NULL);
pRect.x=20;pRect.y=5;pRect.dx=90;pRect.dy=100;
IDISPLAY_DrawRect(pMe->pIDisplay,
&pRect,
MAKE_RGB(2,20,200),
MAKE_RGB(235,2,2),
IDF_RECT_FRAME|IDF_RECT_FILL);
IDISPLAY_FillRect(pMe->pIDisplay,
&pRect,
MAKE_RGB(55,20,200),);
//FLOATTOWSTR(GETTIMESECONDS(),sz,80);
IDISPLAY_SetColor(pMe->pIDisplay,
CLR_USER_TEXT,
MAKE_RGB(225,0,20));
IDISPLAY_SetColor(pMe->pIDisplay,
CLR_USER_BACKGROUND,
MAKE_RGB(192,192,20));//设置颜色
IDISPLAY_DrawText(pMe->pIDisplay,
AEE_FONT_BOLD,
mystring,
-1,
10,
40,
NULL,
IDF_ALIGN_CENTER);//显示中文
IDISPLAY_DrawText(pMe->pIDisplay,
AEE_FONT_BOLD,
menu,
-1,
10,
60,
NULL,
IDF_ALIGN_CENTER);//显示中文
//display "helloworld"
IDISPLAY_DrawText(pMe->pIDisplay, // Display instance
AEE_FONT_BOLD, // Use BOLD font
szText, // Text - Normally comes from resource
-1, // -1 = Use full string length
20, // Ignored - IDF_ALIGN_CENTER
20, // Ignored - IDF_ALIGN_MIDDLE
NULL, // No clipping
IDF_ALIGN_CENTER );
ti = GETTIMESECONDS();
s = ti/(3600*24);
k = ti % (3600*24);
hd = k / 3600;
s = k % 3600;
md = s / 60;
sd = s % 60;
WSPRINTF(hs,sizeof(hs),format,hd,md,sd);
IDISPLAY_DrawText(pMe->pIDisplay, // Display instance
AEE_FONT_BOLD, // Use BOLD font
hs,
-1, // -1 = Use full string length
0, // Ignored - IDF_ALIGN_CENTER
0, // Ignored - IDF_ALIGN_MIDDLE
NULL, // No clipping
IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
ISHELL_Beep(pMe->pIShell,BEEP_MSG,TRUE);//运行时声音
FREE(newstring);
return(TRUE);
// App is told it is exiting
case EVT_APP_STOP:
// Add your code here...
return(TRUE);
// App is being suspended
case EVT_APP_SUSPEND:
// Add your code here...
return(TRUE);
// App is being resumed
case EVT_APP_RESUME:
// Add your code here...
return(TRUE);
// An SMS message has arrived for this app. Message is in the dwParam above as (char *)
// sender simply uses this format "//BREW:ClassId:Message", example //BREW:0x00000001:Hello World
case EVT_APP_MESSAGE:
// Add your code here...
return(TRUE);
// A key was pressed. Look at the wParam above to see which key was pressed. The key
// codes are in AEEVCodes.h. Example "AVK_1" means that the "1" key was pressed.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case EVT_KEY:
if(wParam==AVK_1)
ISHELL_Beep(pMe->pIShell,BEEP_ERROR,TRUE);
if(wParam==AVK_2)
{
pRect.x=20;pRect.y=5;pRect.dx=90;pRect.dy=100;
IDISPLAY_DrawRect(pMe->pIDisplay,
&pRect,
MAKE_RGB(238,20,20),
MAKE_RGB(235,2,2),
IDF_RECT_FRAME|IDF_RECT_FILL);
IDISPLAY_FillRect(pMe->pIDisplay,
&pRect,
MAKE_RGB(55,220,200),);
IDISPLAY_DrawText(pMe->pIDisplay,
AEE_FONT_NORMAL,
colorchange,
-1,
10,
40,
NULL,
IDF_ALIGN_CENTER);//显示中文
IDISPLAY_Update (pMe->pIDisplay);
}
if(wParam==AVK_3)
{
pRect.x=35;pRect.y=25;pRect.dx=90;pRect.dy=100;
IDISPLAY_DrawRect(pMe->pIDisplay,
&pRect,
MAKE_RGB(238,0,20),
MAKE_RGB(235,2,2),
IDF_RECT_FRAME|IDF_RECT_FILL);
IDISPLAY_FillRect(pMe->pIDisplay,
&pRect,
MAKE_RGB(75,0,0),);
IDISPLAY_Update (pMe->pIDisplay);
}
if(wParam==AVK_4)
{
IDISPLAY_ClearScreen (pMe->pIDisplay);
IDISPLAY_Update (pMe->pIDisplay);
}
return(TRUE);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// If nothing fits up to this point then we'll just break out
default:
break;
}
return FALSE;
}
// this function is called when your application is starting up
boolean helloworld_InitAppData(helloworld* pMe)
{
// Get the device information for this handset.
// Reference all the data by looking at the pMe->DeviceInfo structure
// Check the API reference guide for all the handy device info you can get
pMe->DeviceInfo.wStructSize = sizeof(pMe->DeviceInfo);
ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&pMe->DeviceInfo);
// The display and shell interfaces are always created by
// default, so we'll asign them so that you can access
// them via the standard "pMe->" without the "a."
pMe->pIDisplay = pMe->a.m_pIDisplay;
pMe->pIShell = pMe->a.m_pIShell;
// Insert your code here for initializing or allocating resources...
// if there have been no failures up to this point then return success
return TRUE;
}
// this function is called when your application is exiting
void helloworld_FreeAppData(helloworld* pMe)
{
// insert your code here for freeing any resources you have allocated...
// example to use for releasing each interface:
// if ( pMe->pIMenuCtl != NULL ) // check for NULL first
// {
// IMENUCTL_Release(pMe->pIMenuCtl) // release the interface
// pMe->pIMenuCtl = NULL; // set to NULL so no problems trying to free later
// }
//
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -