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

📄 helloworld.c

📁 为新手准备的helloworld,从建立工程到显示text文档,到画简单图形.
💻 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 + -