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

📄 mytext.final

📁 高通 BREW 培训 实用例子
💻 FINAL
📖 第 1 页 / 共 2 页
字号:
					pMe->status = STATUS_MENU;
					break;
				default:
					break;
				}
			}
			else if(pMe->pSoftkey2 && IMENUCTL_IsActive(pMe->pSoftkey2))
			{
				item = IMENUCTL_GetSel(pMe->pSoftkey2);
				switch(item)
				{
				case ID_INPUTMODE:
					IMENUCTL_Release(pMe->pSoftkey2);
					pMe->pSoftkey2 = NULL;
					ITEXTCTL_Release(pMe->pMultiText1);
					pMe->pMultiText1 = NULL;
					ITEXTCTL_Release(pMe->pMultiText2);
					pMe->pMultiText2 = NULL;
					BuildInputMenu(pMe);
					break;
				case ID_OK:
					IMENUCTL_Release(pMe->pSoftkey2);
					pMe->pSoftkey2 = NULL;
					ITEXTCTL_Release(pMe->pMultiText1);
					pMe->pMultiText1 = NULL;
					ITEXTCTL_Release(pMe->pMultiText2);
					pMe->pMultiText2 = NULL;
					IMENUCTL_SetActive(pMe->pMenu,TRUE);
					pMe->status = STATUS_MENU;
					break;
				}
			}
			else if(pMe->pInputMenu && IMENUCTL_IsActive(pMe->pInputMenu))
			{
				item = IMENUCTL_GetSel(pMe->pInputMenu);
				pMe->input_mode = item;
				if(pMe->input_mode == AEE_TM_SYMBOLS)
				  pMe->input_flag = 1;
				IMENUCTL_SetActive(pMe->pInputMenu,FALSE);
				IMENUCTL_Release(pMe->pInputMenu);
				pMe->pInputMenu = NULL;
				DisplayMultiText(pMe);
				SetContent(pMe);
				if(pMe->textctl_focus == FOCUS_TEXT2)
				{
				  ITEXTCTL_Redraw(pMe->pMultiText1);
				  ITEXTCTL_SetActive(pMe->pMultiText2,TRUE);
				  ITEXTCTL_SetInputMode(pMe->pMultiText2,pMe->input_mode);
				}
				else 
				{
				  ITEXTCTL_Redraw(pMe->pMultiText2);
				  ITEXTCTL_SetActive(pMe->pMultiText1,TRUE);
				  ITEXTCTL_SetInputMode(pMe->pMultiText1,pMe->input_mode);
				}
				return TRUE;
			}
			return TRUE;

		case EVT_CTL_TAB:
			if(pMe->status == STATUS_MULTI)
			{
				if(ITEXTCTL_IsActive(pMe->pMultiText1))
				{
				  ITEXTCTL_SetActive(pMe->pMultiText1,FALSE);
				  ITEXTCTL_SetActive(pMe->pMultiText2,TRUE);
				}
				else if(ITEXTCTL_IsActive(pMe->pMultiText2))
				{
				  ITEXTCTL_SetActive(pMe->pMultiText2,FALSE);
				  ITEXTCTL_SetActive(pMe->pMultiText1,TRUE);
				}
				return TRUE;
			}
			else
			  return FALSE;

        // 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 mytext_InitAppData(mytext* 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...
	pMe->pMenu = NULL;
	pMe->pSingleText = NULL;
	pMe->pSoftkey1 = NULL;
	pMe->pMultiText1 = NULL;
	pMe->pMultiText2 = NULL;
	pMe->pSoftkey2 = NULL;
	pMe->pInputMenu = NULL;
	pMe->pContent1 = NULL;
	pMe->pContent2 = NULL;

    // 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 mytext_FreeAppData(mytext* 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->pMenu)
	{
		IMENUCTL_Release(pMe->pMenu);
		pMe->pMenu = NULL;
	}
	if(pMe->pSingleText)
	{
		ITEXTCTL_Release(pMe->pSingleText);
		pMe->pSingleText = NULL;
	}
	if(pMe->pSoftkey1)
	{
		IMENUCTL_Release(pMe->pSoftkey1);
		pMe->pSoftkey1 = NULL;
	}
	if(pMe->pMultiText1)
	{
		ITEXTCTL_Release(pMe->pMultiText1);
		pMe->pMultiText1 = NULL;
	}
	if(pMe->pMultiText2)
	{
		ITEXTCTL_Release(pMe->pMultiText2);
		pMe->pMultiText2 = NULL;
	}
	if(pMe->pSoftkey2)
	{
		IMENUCTL_Release(pMe->pSoftkey2);
		pMe->pSoftkey2 = NULL;
	}
	if(pMe->pInputMenu)
	{
		IMENUCTL_Release(pMe->pInputMenu);
		pMe->pInputMenu = NULL;
	}
	if(pMe->pContent1)
	{
		FREE(pMe->pContent1);
		pMe->pContent1 = NULL;
	}
	if(pMe->pContent2)
	{
		FREE(pMe->pContent2);
		pMe->pContent2 = NULL;
	}
}

static void BuildMainMenu(mytext *pMe)
{
	if(!pMe->pMenu)
	{
		if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MENUCTL,(void**)&pMe->pMenu) != SUCCESS)
			return ;
	}

	IMENUCTL_SetTitle(pMe->pMenu,MYTEXT_RES_FILE,IDS_TITLE,NULL);

	IMENUCTL_AddItem(pMe->pMenu,MYTEXT_RES_FILE,IDS_SINGLE,ID_SINGLE,NULL,0);
	IMENUCTL_AddItem(pMe->pMenu,MYTEXT_RES_FILE,IDS_MULTI,ID_MULTI,NULL,0);

	IMENUCTL_SetActive(pMe->pMenu,TRUE);
	pMe->status = STATUS_MENU;
}

static void DisplaySingleText(mytext *pMe)
{
	AEERect    rect;

	if(!pMe->pSingleText)
	{
		if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_TEXTCTL,(void**)&pMe->pSingleText) != SUCCESS)
			return;
		if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_SOFTKEYCTL,(void**)&pMe->pSoftkey1) != SUCCESS)
		{
			ITEXTCTL_Release(pMe->pSingleText);
			pMe->pSingleText = NULL;
			return ;
		}
	}

	IMENUCTL_SetActive(pMe->pMenu,FALSE);
	IDISPLAY_ClearScreen(pMe->pIDisplay);

	ITEXTCTL_SetTitle(pMe->pSingleText,MYTEXT_RES_FILE,IDS_INPUT_INFO,NULL);
	ITEXTCTL_SetProperties(pMe->pSingleText,TP_FRAME);
	ITEXTCTL_SetMaxSize(pMe->pSingleText,5);
	SETAEERECT(&rect,0,20,pMe->DeviceInfo.cxScreen,pMe->DeviceInfo.cyScreen/2);
	ITEXTCTL_SetRect(pMe->pSingleText,&rect);

	ITEXTCTL_SetSoftKeyMenu(pMe->pSingleText,pMe->pSoftkey1);
	ITEXTCTL_SetInputMode(pMe->pSingleText,AEE_TM_FIRST_OEM+1);
	IMENUCTL_AddItem(pMe->pSoftkey1,MYTEXT_RES_FILE,IDS_DISPLAY,ID_DISPLAY,NULL,0);
	IMENUCTL_AddItem(pMe->pSoftkey1,MYTEXT_RES_FILE,IDS_OK,ID_OK,NULL,0);

	ITEXTCTL_SetActive(pMe->pSingleText,TRUE);
	pMe->status = STATUS_SINGLE;
}

static void DisplayMultiText(mytext *pMe)
{
	AEERect       rect;
	int           ascent;
	int           descent;

	pMe->status = STATUS_MULTI;

	if(!pMe->pMultiText1)
	{
		if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_TEXTCTL,(void**)&pMe->pMultiText1) != SUCCESS)
			return;
		if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_TEXTCTL,(void**)&pMe->pMultiText2) != SUCCESS)
		{
			ITEXTCTL_Release(pMe->pMultiText1);
			pMe->pMultiText1 = NULL;
			return;
		}
		if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_SOFTKEYCTL,(void**)&pMe->pSoftkey2) != SUCCESS)
		{
			ITEXTCTL_Release(pMe->pMultiText1);
			pMe->pMultiText1 = NULL;
			ITEXTCTL_Release(pMe->pMultiText2);
			pMe->pMultiText2 = NULL;
			return ;
		}
	}

	IMENUCTL_SetActive(pMe->pMenu,FALSE);
	IDISPLAY_ClearScreen(pMe->pIDisplay);

	IDISPLAY_GetFontMetrics(pMe->pIDisplay,AEE_FONT_NORMAL,&ascent,&descent);

	ITEXTCTL_SetTitle(pMe->pMultiText1,MYTEXT_RES_FILE,IDS_INPUT_INFO,NULL);
	ITEXTCTL_SetProperties(pMe->pMultiText1,TP_FRAME);
	ITEXTCTL_SetMaxSize(pMe->pMultiText1,5);
	SETAEERECT(&rect,0,20,pMe->DeviceInfo.cxScreen,ascent + descent +2);
	ITEXTCTL_SetRect(pMe->pMultiText1,&rect);

	ITEXTCTL_SetTitle(pMe->pMultiText2,MYTEXT_RES_FILE,IDS_TITLE_ADDED,NULL);
	ITEXTCTL_SetProperties(pMe->pMultiText2,TP_FRAME);
	ITEXTCTL_SetMaxSize(pMe->pMultiText2,5);
	SETAEERECT(&rect,0,60,pMe->DeviceInfo.cxScreen,ascent + descent + 2);
	ITEXTCTL_SetRect(pMe->pMultiText2,&rect);

	IMENUCTL_AddItem(pMe->pSoftkey2,MYTEXT_RES_FILE,IDS_INPUTMODE,ID_INPUTMODE,NULL,0);
	IMENUCTL_AddItem(pMe->pSoftkey2,MYTEXT_RES_FILE,IDS_OK,ID_OK,NULL,0);
	IMENUCTL_Redraw(pMe->pSoftkey2);
}

static void BuildInputMenu(mytext *pMe)
{
	AEETextInputMode     i;
	AEETextInputModeInfo info;
	ITextCtl             *pTextCtl;

	if(!pMe->pInputMenu)
	{
		if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MENUCTL,(void**)&pMe->pInputMenu) != SUCCESS)
			return ;
	}

	pMe->status = STATUS_INPUTMENU;

	IDISPLAY_ClearScreen(pMe->pIDisplay);
	IMENUCTL_SetTitle(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_INPUTMODE,NULL);
	ISHELL_CreateInstance(pMe->pIShell,AEECLSID_TEXTCTL,(void**)&pTextCtl);

	ITEXTCTL_EnumModeInit(pTextCtl);
	i = ITEXTCTL_EnumNextMode(pTextCtl,&info);
	while(i != AEE_TM_NONE)
	{
		switch(i)
		{
		case AEE_TM_PINYIN:
			IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_PINYIN,AEE_TM_PINYIN,NULL,0);
			break;
		case AEE_TM_STROKE:
			IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_STROKE,AEE_TM_STROKE,NULL,0);
			break;
		case AEE_TM_EZTEXT:
			IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_EZTEXT,AEE_TM_EZTEXT,NULL,0);
			break;
		case AEE_TM_NUMBERS:
			IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_NUMBERS,AEE_TM_NUMBERS,NULL,0);
			break;
		case AEE_TM_LETTERS:
			IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_ENGLISH,AEE_TM_LETTERS,NULL,0);
			break;
		case AEE_TM_SYMBOLS:
			IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_SYMBOLS,AEE_TM_SYMBOLS,NULL,0);
			break;
		case AEE_TM_RAPID:
			IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_RAPID,AEE_TM_RAPID,NULL,0);
			break;
		case AEE_TM_T9:
			IMENUCTL_AddItem(pMe->pInputMenu,MYTEXT_RES_FILE,IDS_T9,AEE_TM_T9,NULL,0);
			break;
		}
		i = ITEXTCTL_EnumNextMode(pTextCtl,&info);
	}
	IMENUCTL_SetActive(pMe->pInputMenu,TRUE);
	ITEXTCTL_Release(pTextCtl);
}

static void GetContent(mytext *pMe)
{
	if(ITEXTCTL_IsActive(pMe->pMultiText1))
		pMe->textctl_focus = FOCUS_TEXT1;
	if(ITEXTCTL_IsActive(pMe->pMultiText2))
		pMe->textctl_focus = FOCUS_TEXT2;

	if(!pMe->pContent1)
		pMe->pContent1 = (AECHAR*)MALLOC(12);
	if(!pMe->pContent1)
	  return;
	ITEXTCTL_GetText(pMe->pMultiText1,pMe->pContent1,6);

	if(!pMe->pContent2)
		pMe->pContent2 = (AECHAR*)MALLOC(12);
	if(!pMe->pContent2)
	  return;
	ITEXTCTL_GetText(pMe->pMultiText2,pMe->pContent2,6);

	ITEXTCTL_SetActive(pMe->pMultiText1,FALSE);
	ITEXTCTL_SetActive(pMe->pMultiText2,FALSE);
}

static void SetContent(mytext *pMe)
{
	if(pMe->pContent1)
	{
		ITEXTCTL_SetText(pMe->pMultiText1,pMe->pContent1,-1);
		ITEXTCTL_SetCursorPos(pMe->pMultiText1,TC_CURSOREND);
	}
	if(pMe->pContent2)
	{
		ITEXTCTL_SetText(pMe->pMultiText2,pMe->pContent2,-1);
		ITEXTCTL_SetCursorPos(pMe->pMultiText2,TC_CURSOREND);
	}
}

⌨️ 快捷键说明

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