📄 extentest.c
字号:
example, a generic structure is provided so that app developers need not change app specific
initialization section every time except for a call to IDisplay_InitAppData().
This is done as follows: InitAppData() is called to initialize AppletData
instance. It is app developers responsibility to fill-in app data initialization
code of InitAppData(). App developer is also responsible to release memory
allocated for data contained in AppletData -- this can be done in
IDisplay_FreeAppData().
PROTOTYPE:
int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
PARAMETERS:
clsID: [in]: Specifies the ClassID of the applet which is being loaded
pIShell: [in]: Contains pointer to the IShell object.
pIModule: pin]: Contains pointer to the IModule object to the current module to which
this app belongs
ppObj: [out]: On return, *ppObj must point to a valid IApplet structure. Allocation
of memory for this structure and initializing the base data members is done by AEEApplet_New().
DEPENDENCIES
none
RETURN VALUE
AEE_SUCCESS: If the app needs to be loaded and if AEEApplet_New() invocation was
successful
EFAILED: If the app does not need to be loaded or if errors occurred in
AEEApplet_New(). If this function returns FALSE, the app will not be loaded.
SIDE EFFECTS
none
===========================================================================*/
int AEEClsCreateInstance(AEECLSID ClsId, IShell *pIShell, IModule *po, void **ppObj)
{
*ppObj = NULL;
/*1.UI applet*/
if( ClsId == AEECLSID_UIAPPLET)
{
// Create the applet and make room for the applet structure
if( AEEApplet_New(sizeof(UIApplet),
ClsId,
pIShell,
po,
(IApplet**)ppObj,
(AEEHANDLER)UIApplet_HandleEvent,
(PFNFREEAPPDATA)UIApplet_FreeAppData) ) // the FreeAppData function is called after sending EVT_APP_STOP to the HandleEvent function
{
//Initialize applet data, this is called before sending EVT_APP_START
// to the HandleEvent function
if(UIApplet_InitAppData((UIApplet*)*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
}
/*2.Dat Applet*/
else if(ClsId == AEECLSID_DATAPPLET)
{
// Create the applet and make room for the applet structure
if( AEEApplet_New(sizeof(UIApplet),
ClsId,
pIShell,
po,
(IApplet**)ppObj,
(AEEHANDLER)DatApplet_HandleEvent,
(PFNFREEAPPDATA)DatApplet_FreeAppData) ) // the FreeAppData function is called after sending EVT_APP_STOP to the HandleEvent function
{
//Initialize applet data, this is called before sending EVT_APP_START
// to the HandleEvent function
if(DatApplet_InitAppData((DatApplet*)*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
}
/*3.UI extension*/
else if(ClsId == AEECLSID_UIEXTENSION)
{
if( UIExtensionCls_New(sizeof(UIExtensionCls), pIShell, po, (IUIExtension **)ppObj) == SUCCESS )
return AEE_SUCCESS;
}
/*4.dat extension*/
else if(ClsId == AEECLSID_DATEXTENSION)
{
if( DatExtensionCls_New(sizeof(DatExtensionCls), pIShell, po, (IDatExtension **)ppObj) == SUCCESS )
return AEE_SUCCESS;
}
return(EFAILED);
}
/*UI applet*/
/*===========================================================================
FUNCTION SampleAppWizard_HandleEvent
DESCRIPTION
This is the EventHandler for this app. All events to this app are handled in this
function. All APPs must supply an Event Handler.
PROTOTYPE:
boolean SampleAppWizard_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)
PARAMETERS:
pi: Pointer to the AEEApplet structure. This structure contains information specific
to this applet. It was initialized during the AEEClsCreateInstance() function.
ecode: Specifies the Event sent to this applet
wParam, dwParam: Event specific data.
DEPENDENCIES
none
RETURN VALUE
TRUE: If the app has processed the event
FALSE: If the app did not process the event
SIDE EFFECTS
none
===========================================================================*/
static boolean UIApplet_HandleEvent(UIApplet* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
IUIExtension* pUIExtension = NULL;
int iRet = 0;
char* pBuf = NULL;
switch (eCode)
{
// App is told it is starting up
case EVT_APP_START:
// Add your code here...
/*start Dat applet run background*/
ISHELL_StartBackgroundApplet(pMe->a.m_pIShell,AEECLSID_DATAPPLET,NULL);
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:
// Add your code here...
return(TRUE);
case EVT_DATA_UPDATE:/*receive the event sended by dat applet*/
pBuf = (char*)(dwParam);
IUIExtension_Show(pMe->m_pUiExtension,pBuf,8);
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 UIApplet_InitAppData(UIApplet* 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);
// Insert your code here for initializing or allocating resources...
if(SUCCESS != (ISHELL_CreateInstance(pMe->a.m_pIShell,
AEECLSID_UIEXTENSION,
(void **)&pMe->m_pUiExtension)))
{
return FALSE;
}
// 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 UIApplet_FreeAppData(UIApplet* 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
// }
//
if(NULL != pMe->m_pUiExtension)
{
IUIExtension_Release(pMe->m_pUiExtension);
pMe->m_pUiExtension = NULL;
}
}
/*dat applet*/
static boolean DatApplet_HandleEvent(DatApplet* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
IDatExtension* pDatExtension = NULL;
int iLoop = 0;
switch (eCode)
{
// App is told it is starting up
case EVT_APP_START:
// Add your code here...
return(TRUE);
case EVT_APP_START_BACKGROUND :/*start backgroud*/
// ISHELL_SetTimer(pMe->a.m_pIShell,20,TimeNotify,(void*)pMe);
IDatExtension_SendData(pMe->m_pDatExtension,TimeNotify);
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:
// Add your code here...
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 DatApplet_InitAppData(DatApplet* 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);
// Insert your code here for initializing or allocating resources...
if(SUCCESS != (ISHELL_CreateInstance(pMe->a.m_pIShell,
AEECLSID_DATEXTENSION,
(void **)&pMe->m_pDatExtension)))
{
return FALSE;
}
// 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 DatApplet_FreeAppData(DatApplet* 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
// }
//
if(NULL != pMe->m_pDatExtension)
{
IDatExtension_Release(pMe->m_pDatExtension);
pMe->m_pDatExtension = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -