📄 handbeans.c
字号:
#include "Type.h"
//初始化接口
boolean InitAppData(SAppData* psAppData)
{
AEEDeviceInfo sDeviceInfo;
AEERect sRect;
//初始化Graphics接口
if( ISHELL_CreateInstance(psAppData->sApp.m_pIShell, AEECLSID_GRAPHICS,
(void**)&(psAppData->pIGraphics)) != SUCCESS)
{
return FALSE;
}
ISHELL_GetDeviceInfo(psAppData->sApp.m_pIShell, &sDeviceInfo);
sRect.x = sRect.y = 0;
sRect.dx = sRect.dy = sDeviceInfo.cxScreen < sDeviceInfo.cyScreen ? sDeviceInfo.cxScreen : sDeviceInfo.cyScreen;
IGRAPHICS_SetViewport(psAppData->pIGraphics, &sRect, AEE_GRAPHICS_NONE);
//初始化INetMgr接口
if( ISHELL_CreateInstance(psAppData->sApp.m_pIShell, AEECLSID_NET,
(void**)&(psAppData->pINetMgr)) != SUCCESS)
{
return FALSE;
}
//初始化ISock接口
if( (psAppData->pISocket = INETMGR_OpenSocket(psAppData->pINetMgr, AEE_SOCK_STREAM)) == NULL )//TCP协议
{
return FALSE;
}
return TRUE;
}
//释放接口
void FreeAppData(SAppData *pIApplet)
{
if(pIApplet->pIGraphics)
{
IGRAPHICS_Release(pIApplet->pIGraphics);
}
if(((SAppData*)pIApplet)->pISocket)
{
ISOCKET_Release(((SAppData*)pIApplet)->pISocket);
}
if(((SAppData*)pIApplet)->pINetMgr)
{
INETMGR_Release(((SAppData*)pIApplet)->pINetMgr);
}
}
int AEEClsCreateInstance(AEECLSID ClsId, IShell * pIShell, IModule * po, void** ppObj)
{
*ppObj = NULL;
if(ClsId == AEECLSID_HANDBEANS)
{
static boolean HandBeans_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam);
if(AEEApplet_New(sizeof(SAppData), ClsId, pIShell, po, (IApplet**)ppObj, (AEEHANDLER)HandBeans_HandleEvent, (PFNFREEAPPDATA)FreeAppData) == TRUE)
{
// Add your code here .....
if(InitAppData((SAppData*)*ppObj))
{
return AEE_SUCCESS;
}
return (AEE_SUCCESS);
}
}
return (EFAILED);
}
static boolean HandBeans_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
char szIP[] = SERVER_IP;
// BYTE x, y;
switch (eCode)
{
case EVT_APP_START:
//要初始化SAppData中的标志性变量
((SAppData*)pi)->btSendedLen = 0;
((SAppData*)pi)->dwRecvedLen = 0;
((SAppData*)pi)->sSendPack.pbtPack4Send[0] = ((SAppData*)pi)->sSendPack.pbtPack4Send[1] = 0;
((SAppData*)pi)->sSendPack.bBomb = FALSE;
//开始获得本地手机的IP地址值,然后在OnHostName里会连接到远程,并收发包,程序从这里被引导
CALLBACK_Init(&(((SAppData*)pi)->psDNSCallBack), OnHostName, pi);
INETMGR_GetHostByName(((SAppData*)pi)->pINetMgr, &(((SAppData*)pi)->sDNSResult), szIP, &(((SAppData*)pi)->psDNSCallBack));
return(TRUE);
case EVT_KEY:
switch(wParam)
{
case AVK_UP: //上
//pbtPack4Send[0]表示上下(1下,-1上,0不动), pbtPack4Send[1]表示左右(1右,-1左,0不动)
((SAppData*)pi)->sSendPack.pbtPack4Send[1] = 0;
((SAppData*)pi)->sSendPack.pbtPack4Send[0] = -1;
break;
case AVK_DOWN: //下
((SAppData*)pi)->sSendPack.pbtPack4Send[1] = 0;
((SAppData*)pi)->sSendPack.pbtPack4Send[0] = 1;
break;
case AVK_LEFT: //左
((SAppData*)pi)->sSendPack.pbtPack4Send[0] = 0;
((SAppData*)pi)->sSendPack.pbtPack4Send[1] = -1;
break;
case AVK_RIGHT: //右
((SAppData*)pi)->sSendPack.pbtPack4Send[0] = 0;
((SAppData*)pi)->sSendPack.pbtPack4Send[1] = 1;
break;
case AVK_SELECT: //选择键
((SAppData*)pi)->sSendPack.bBomb = TRUE;
break;
case AVK_CLR:
break;
}
return FALSE;
break;
case EVT_APP_STOP:
// Add your code here .....
return TRUE;
default:
break;
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -