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

📄 keymove.c

📁 一个自己做的brew平台上的按键的实例
💻 C
字号:
/*------------------------------------------------------------------------------------------------------------------------
FILE: keymove.c
---------------------------------------------------------------------------------------------------------------------------*/
#include "AEEModGen.h" // Module interface definitions
#include "AEEAppGen.h" // Applet interface definitions
#include "AEEShell.h" // Shell interface definitions
#include "keymove.bid" // Applet-specific header that contains class ID
#include "aeedisp.h"
#ifndef Max
#define Max( x, y ) ( ((x) > (y)) ? (x) : (y) )
#endif
#ifndef Min
#define Min( x, y ) ( ((x) < (y)) ? (x) : (y) )
#endif
typedef struct _CKeyApp
{
	AEEApplet a; // Mandatory first AEEApplet data member
	int x;
	int y;
	int cxScreen;
	int cyScreen;
}CKeyApp;

static boolean keymove_HandleEvent(AEEApplet * pi, AEEEvent eCode,
								   uint16 wParam, uint32 dwParam);
int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
{
	*ppObj = NULL;
	if(ClsId == AEECLSID_KEYMOVE)
	{
		if(AEEApplet_New(sizeof(CKeyApp), ClsId, pIShell,po,(IApplet**)ppObj,
			(AEEHANDLER)keymove_HandleEvent,NULL)
			== TRUE)
		{
			// Add your code here .....
			return (AEE_SUCCESS);
		}
	}
	return (EFAILED);
}

static boolean keymove_HandleEvent(AEEApplet * pMe, AEEEvent eCode, uint16 wParam, uint32
								   dwParam)
{
	CKeyApp *pApp = (CKeyApp *)pMe;
	AEERect rc;
	AEEDeviceInfo deviceInfo;
	switch (eCode)
	{
	case EVT_APP_START:
		ISHELL_GetDeviceInfo(pApp->a.m_pIShell, &deviceInfo);
		pApp->x = (deviceInfo.cxScreen - 8)/2;
		pApp->y = (deviceInfo.cyScreen - 8)/2;
		pApp->cxScreen = deviceInfo.cxScreen;
		pApp->cyScreen = deviceInfo.cyScreen;
		SETAEERECT(&rc,pApp->x,pApp->y,8,8);
		IDISPLAY_DrawRect(pApp->a.m_pIDisplay,&rc,0xff000000,0x00ff0000,IDF_RECT_FRAME|IDF_RECT_FILL);
		IDISPLAY_Update (pApp->a.m_pIDisplay);
		return(TRUE);
	case EVT_KEY:
		SETAEERECT(&rc,pApp->x,pApp->y,8,8);
		IDISPLAY_DrawRect(pApp->a.m_pIDisplay,&rc,0xffffff00,0xffffff00,IDF_RECT_FRAME|IDF_RECT_FILL);
		switch(wParam)
		{
		case AVK_UP:
			pApp->y -=4;
			break;
		case AVK_DOWN:
			pApp->y +=4;
			break;
		case AVK_LEFT:
			pApp->x -=4;
			break;
		case AVK_RIGHT:
			pApp->x +=4;
			break;
		default:
			return FALSE;
		}
		pApp->x = Max(0, Min(pApp->x, pApp->cxScreen - 8));
		pApp->y = Max(0, Min(pApp->y, pApp->cyScreen - 8));
		SETAEERECT(&rc,pApp->x,pApp->y,8,8);
		IDISPLAY_DrawRect(pApp->a.m_pIDisplay,&rc,0xff000000,0x00ff0000,IDF_RECT_FRAME|IDF_RECT_FILL);
		IDISPLAY_Update (pApp->a.m_pIDisplay);
		return TRUE;
		case EVT_APP_STOP:
			return TRUE;
		default:
			break;
	}
	return FALSE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -