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

📄 handbeans.c

📁 手机开发环境BREW实例
💻 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 + -