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

📄 shiyan9.c

📁 该程序实现了菜单的显示 带图标的菜单显示 子菜单的实现 1号键为进入菜单的退出键
💻 C
📖 第 1 页 / 共 2 页
字号:
				break;
			case MY_MENU_ID_M3:
				IMENUCTL_SetActive(pMe->pIMenuCtl,FALSE);
			//	pMe->DrawStringID = IDS_STRING_1008;
			//	DrawStr(pMe,pMe->DrawStringID);
				my_init_menu2(pMe);
			//	pMe->app_status = STU_MP3LIST;
				break;
			case MY_MENU_ID_M4:
				ISHELL_CloseApplet(pMe->pIShell,TRUE);
				break;
			
			case MY_MENU_ID_MS1:
				IMENUCTL_SetActive(pMe->pIMenuCtl2,FALSE);
				pMe->DrawStringID = IDS_STRING_1010;
				DrawStr(pMe,pMe->DrawStringID);
				break;
			case MY_MENU_ID_MS2:
				IMENUCTL_SetActive(pMe->pIMenuCtl2,FALSE);
				pMe->DrawStringID = IDS_STRING_1011;
				DrawStr(pMe,pMe->DrawStringID);
				break;
			case MY_MENU_ID_MS3:
				IMENUCTL_SetActive(pMe->pIMenuCtl2,FALSE);
				IMENUCTL_SetActive(pMe->pIMenuCtl,TRUE);
				break;
			}
      		return(TRUE);
		
		case EVT_KEY:
		    // Add your code here...
			
			if((pMe->pIMenuCtl != NULL)&&(IMENUCTL_IsActive(pMe->pIMenuCtl)))
			{
				IMENUCTL_HandleEvent(pMe->pIMenuCtl,eCode,wParam,dwParam);
			}
			if((pMe->pIMenuCtl2 != NULL)&&(IMENUCTL_IsActive(pMe->pIMenuCtl2)))
			{
				IMENUCTL_HandleEvent(pMe->pIMenuCtl2,eCode,wParam,dwParam);
			}

			switch(wParam)
			{
				case AVK_1:
					if(IMENUCTL_IsActive(pMe->pIMenuCtl)==FALSE)
						IMENUCTL_SetActive(pMe->pIMenuCtl,TRUE);
						DBGPRINTF("current status is MainMenu");
					break;
					if(IMENUCTL_IsActive(pMe->pIMenuCtl2)==FALSE)
						IMENUCTL_SetActive(pMe->pIMenuCtl2,TRUE);
					break;

			}			
      		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 shiyan9_InitAppData(shiyan9* 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 shiyan9_FreeAppData(shiyan9* 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 ( pMe->pIMenuCtl2 != NULL )         // check for NULL first
     {
        IMENUCTL_Release(pMe->pIMenuCtl2);   // release the interface
        pMe->pIMenuCtl2 = NULL;             // set to NULL so no problems trying to free later
     }

}

boolean my_init_menu(shiyan9* pMe)
{
	AEERect rect;			//定义菜单显示的区域
	CtlAddItem ai1,ai2;			//定义 带图标菜单的结构

	rect.x = 0;
	rect.y = 0;
	rect.dx = pMe->DeviceInfo.cxScreen;	//全屏显示菜单
	rect.dy = pMe->DeviceInfo.cyScreen;


	ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MENUCTL,&pMe->pIMenuCtl);	//创建菜单接口实例

	//-------使用IMENUCTL_AddItem()函数添加两个不带图标的菜单----------------
	IMENUCTL_AddItem(pMe->pIMenuCtl,SHIYAN9_RES_FILE,IDS_STRING_1001,MY_MENU_ID_M1,NULL,0);
	IMENUCTL_AddItem(pMe->pIMenuCtl,SHIYAN9_RES_FILE,IDS_STRING_1002,MY_MENU_ID_M2,NULL,0);


	//------定义一个带图标菜单-------
	ai1.dwData =213;
	ai1.pszResImage = SHIYAN9_RES_FILE;	//包含有菜单图标的资源文件名
	ai1.pszResText = SHIYAN9_RES_FILE;	//包含有菜单文本字符串的资源文件名
	ai1.wItemID = MY_MENU_ID_M3;			//该菜单项的ID
	ai1.wText = IDS_STRING_1003;			//资源文件中菜单文本字符串的ID
	ai1.wImage = IDI_OBJECT_5001;		//资源文件中菜单图标的ID
	ai1.pText = NULL;
	ai1.pImage = NULL;
	ai1.wFont = 0;						//字体

	//------定义一个带图标菜单-------
	ai2.dwData =213;
	ai2.pszResImage = SHIYAN9_RES_FILE;	//包含有菜单图标的资源文件名
	ai2.pszResText = SHIYAN9_RES_FILE;	//包含有菜单文本字符串的资源文件名
	ai2.wItemID = MY_MENU_ID_M4;			//该菜单项的ID
	ai2.wText = IDS_STRING_1004;			//资源文件中菜单文本字符串的ID
	ai2.wImage = IDI_OBJECT_5002;		//资源文件中菜单图标的ID
	ai2.pText = NULL;
	ai2.pImage = NULL;
	ai2.wFont = 0;						//字体



	//-------使用IMENUCTL_AddItemEx()函数添加1个带图标的菜单----------------
	if (IMENUCTL_AddItemEx(pMe->pIMenuCtl,&ai1) == TRUE) 
	{
		DBGPRINTF("icon menu item add success");   //如果菜单项添加成功
	}else
	{
		DBGPRINTF("icon menu item add faild");
	}

	//-------使用IMENUCTL_AddItemEx()函数添加1个带图标的菜单----------------
	if (IMENUCTL_AddItemEx(pMe->pIMenuCtl,&ai2) == TRUE) 
	{
		DBGPRINTF("icon menu item add success");	//如果菜单项添加成功
	}
	else
	{
		DBGPRINTF("icon menu item add faild");
	}


	//-------设置菜单的标题----------------
	IMENUCTL_SetTitle(pMe->pIMenuCtl,SHIYAN9_RES_FILE,IDS_STRING_1005,NULL);
	IMENUCTL_EnableCommand(pMe->pIMenuCtl,TRUE);
	IMENUCTL_SetRect(pMe->pIMenuCtl,&rect);
	IMENUCTL_SetActive(pMe->pIMenuCtl,TRUE);  //激活
    return TRUE;
 
}

boolean my_init_menu2(shiyan9* pMe)
{
	AEERect rect;			//定义菜单显示的区域

	rect.x = 0;
	rect.y = 0;
	rect.dx = pMe->DeviceInfo.cxScreen;	//全屏显示菜单
	rect.dy = pMe->DeviceInfo.cyScreen;

	ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MENUCTL,&pMe->pIMenuCtl2);	//创建菜单接口实例

	//-------使用IMENUCTL_AddItem()函数添加3个不带图标的菜单----------------
	IMENUCTL_AddItem(pMe->pIMenuCtl2,SHIYAN9_RES_FILE,IDS_STRING_1010,MY_MENU_ID_MS1,NULL,0);
	IMENUCTL_AddItem(pMe->pIMenuCtl2,SHIYAN9_RES_FILE,IDS_STRING_1011,MY_MENU_ID_MS2,NULL,0);
	IMENUCTL_AddItem(pMe->pIMenuCtl2,SHIYAN9_RES_FILE,IDS_STRING_1012,MY_MENU_ID_MS3,NULL,0);	

	//-------设置菜单的标题----------------
	IMENUCTL_SetTitle(pMe->pIMenuCtl2,SHIYAN9_RES_FILE,IDS_STRING_1009,NULL);
	IMENUCTL_EnableCommand(pMe->pIMenuCtl2,TRUE);
	IMENUCTL_SetRect(pMe->pIMenuCtl2,&rect);
	IMENUCTL_SetActive(pMe->pIMenuCtl2,TRUE);  //激活
    return TRUE;
 
}


//=======在屏幕中间显示资源文件中ID为DrawStringID的字符串================================
void DrawStr(shiyan9* pMe, uint16 DrawStringID)
{
	AECHAR* pBuffer;
	uint32 bufSize;

	//-------获取资源文件MYMENU_RES_FILE中指定ID字符串资源的大小
	ISHELL_GetResSize(pMe->pIShell,SHIYAN9_RES_FILE,DrawStringID,RESTYPE_STRING,&bufSize);

	//--为该字符串分配内存空间 pBuffer--
	pBuffer = (AECHAR*)MALLOC(bufSize);
	
	
	IDISPLAY_ClearScreen(pMe->pIDisplay);

	//-- 将字符串从资源文件MYMENU_RES_FILE中加在到pBuffer中
	ISHELL_LoadResString(pMe->pIShell,
					SHIYAN9_RES_FILE,
					DrawStringID,
					pBuffer,
					bufSize);

	//--  显示该字符串 --
	IDISPLAY_DrawText(pMe->pIDisplay,
				AEE_FONT_NORMAL,
				pBuffer,
				-1,50,50,
				NULL,
				IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
	IDISPLAY_Update(pMe->pIDisplay);

	//--  显示完后,释放pBuffer--
	FREE(pBuffer);
}

⌨️ 快捷键说明

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