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

📄 wk_basefunc.cpp

📁 联通手机的宝典画面.用brew 平台编辑而成.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		FREEIF(str);*/
		
		return SAVEFILE_ERROR;
	}
	
	// 保存文件索引
	bTemp = AddFavoriteIndex(pIShell, ppFile, szName, nType, szFile);
	if (!bTemp)
	{// 错误提示
	/*	AECHAR * str = NULL;
		WebData * pWebData = &pMe->web;
		LoadWideText(pMe->app.m_pIShell, IDS_ERR_WRITEFILE, &str, RES_FILE);
		PrintString2(pWebData->m_pIStatic, pWebData->szCategory, str, FALSE);
		FREEIF(str);*/
		
		return SAVEFILE_ERROR;
	}
	return SAVEFILE_SUCCESS;
	
}

// 设置菜单样式
void SetMenuStyle(IMenuCtl * pMenu, AEERect * pRect)
{
	AEEItemStyle		sel, normal;
	AEEMenuColors colors;

	normal.ft = AEE_FT_NONE;
	normal.xOffset = 0;
	normal.yOffset = 0;
	normal.roImage = AEE_RO_TRANSPARENT;

	sel.ft = AEE_FT_RAISED;
	sel.xOffset = 0;
	sel.yOffset = 0;
	sel.roImage = AEE_RO_TRANSPARENT;
	IMENUCTL_SetStyle(pMenu, &normal, &sel);			

	colors.wMask = MC_BACK | MC_SEL_BACK;
	colors.cBack = MAKE_BACK_COLOR;
	colors.cSelBack = MAKE_SEL_COLOR;
	IMENUCTL_SetColors(pMenu, &colors);

	IMENUCTL_SetProperties(pMenu, MP_MAXSOFTKEYITEMS | MP_ICON_TEXT_TOP | MP_NO_ARROWS);
}

int GetImageWidth(IImage * img)
{
	AEEImageInfo info;
	if (img != NULL)
		IIMAGE_GetInfo(img, &info);
	return info.cx;
}

int GetImageHeight(IImage * img)
{
	AEEImageInfo info;
	if (img != NULL)
		IIMAGE_GetInfo(img, &info);
	return info.cy;
}

int _parseEscapeChars( char *sz )
{
    int i,j,len;
	char buf[CBUF1SIZE];

	STRCPY( buf, sz );

	// Convert literal "\n" in resources to 0x0A newlines
	len = STRLEN( buf );
	for( i=j=0; i<=len; i++ ) {
		if( buf[i] == '\\' ) {
			switch( buf[++i] ) {
			case 'n':
				sz[j++] = '\n';
				break;
			case '\\':
				sz[j++] = '\\';
				break;
			default:
				break;
			}
		} else if( buf[i] == '%' ) {
			i++;
			if( buf[i] == '%' ) {
				sz[j++] = '%';
			} else if( !STRNCMP( buf+i, "CLR", 3 )) {
				STRCPY( sz+j, CLR_KEY );
				j+= STRLEN( CLR_KEY );
				i+= STRLEN( "CLR" )-1;
			} else if( !STRNCMP( buf+i, "SEL", 3 )) {
				STRCPY( sz+j, SEL_KEY );
				j+= STRLEN( SEL_KEY );
				i+= STRLEN( "SEL" )-1;
			}
		} else {
			sz[j++] = buf[i];
		}
	}
	return( j );
}


int _parseEscapeAEChars( AECHAR * sz )
{
    int i, len;
	//AECHAR buf[CBUF1SIZE];

	// Convert literal "~" in resources to 0x0A newlines
	len = WSTRLEN( sz );
	for( i=0; i<=len; i++ ) {
        if ( sz[i] == L'~' )
           sz[i] = '\n';
    }
    
    return i;
}

// 将char型的字符串转为AECHAR
boolean StrToWstr(char * szBuf, AECHAR ** ppDest)
{
	long nLen;

	if (szBuf == NULL) return FALSE;
	if (ppDest == NULL) return FALSE;
	
	nLen = (STRLEN(szBuf) + 1) * sizeof(AECHAR);
	*ppDest = (AECHAR *)MALLOC(nLen);

	STR_TO_WSTR(szBuf, *ppDest, nLen);

	return TRUE;
}

// 将AECHAR型的字符串转为char
boolean WstrToStr(AECHAR * szBuf, char ** ppDest)
{
	long nLen;

	if (szBuf == NULL) return FALSE;
	if (ppDest == NULL) return FALSE;
	
	nLen = (WSTRLEN(szBuf) + 1) * sizeof(char);
	*ppDest = (char *)MALLOC(nLen);

	WSTR_TO_STR(szBuf, *ppDest, nLen);

	return TRUE;
}

// 产生一个指定后缀的新文件名
boolean GetNewFileName(IShell * pIShell, IFileMgr **ppFile, char * lpFile, char * lpExt)
{
	long	nIndex	= 0;
	boolean bTemp	= FALSE;
	boolean bPath	= FALSE;	// 是否需要设置收藏夹路径
	
	if (pIShell == NULL || ppFile == NULL) return FALSE;
    ISHELL_CreateInstance(pIShell, AEECLSID_FILEMGR, (void **)ppFile);
	
	if (STRLEN(FAVORITE_PATH) > 0) bPath = TRUE;

	// 检查收藏文件夹是否存在,如果不存在,则创建它
	if (bPath)
	{
		if (IFILEMGR_EnumInit(*ppFile, "", TRUE) == SUCCESS)
		{
			FileInfo pInfo;
			
			while (IFILEMGR_EnumNext(*ppFile, &pInfo))
			{
				if (STRICMP(pInfo.szName, FAVORITE_PATH) == 0)
					bTemp = TRUE;
			}
		}
		if (!bTemp)
		{
			IFILEMGR_MkDir(*ppFile, FAVORITE_PATH);
		}
	}
	
	
	// 开始枚举文件
	bTemp = FALSE;
	for (nIndex = 0; nIndex < MAX_FILE; nIndex++)
	{
		IFile *f;
		if (bPath)
			SPRINTF(lpFile, "%s\\tmp%04d.%s", FAVORITE_PATH, nIndex, lpExt);
		else
			SPRINTF(lpFile, "tmp%04d.%s", nIndex, lpExt);
		
		f = IFILEMGR_OpenFile (*ppFile, lpFile, _OFM_READ);
		if (f)
		{
			IFILE_Release(f);
		}
		else
		{
			bTemp = TRUE;
			break;
		}
	}
	
    IFILEMGR_Release(*ppFile);
    *ppFile = NULL;
	
	return bTemp;
}

boolean CheckFileName(IShell * pIShell, IFileMgr **ppFile, char * lpFile, char * lpExt, long nID)
{
	boolean bTemp	= FALSE;
	boolean bPath	= FALSE;	// 是否需要设置收藏夹路径
	
	if (pIShell == NULL || ppFile == NULL) return FALSE;
    ISHELL_CreateInstance(pIShell, AEECLSID_FILEMGR, (void **)ppFile);
	
	if (STRLEN(FAVORITE_PATH) > 0) bPath = TRUE;
	
	// 检查收藏文件夹是否存在,如果不存在,则创建它
	if (bPath)
	{
		if (IFILEMGR_EnumInit(*ppFile, "", TRUE) == SUCCESS)
		{
			FileInfo pInfo;
			
			while (IFILEMGR_EnumNext(*ppFile, &pInfo))
			{
				if (STRICMP(pInfo.szName, FAVORITE_PATH) == 0)
					bTemp = TRUE;
			}
		}
		if (!bTemp)
		{
			IFILEMGR_MkDir(*ppFile, FAVORITE_PATH);
		}
	}
	
	// 开始枚举文件
	bTemp = FALSE;
	IFile *f;
	/*
	if (bPath)
		SPRINTF(lpFile, "%s\\wxfz%04d.%s", FAVORITE_PATH, nID, lpExt);
	else
		SPRINTF(lpFile, "wxfz%04d.%s", nID, lpExt);*/
	if (bPath)
		SPRINTF(lpFile, "%s\\xhf%04d.%s", FAVORITE_PATH, nID, lpExt);
	else
		SPRINTF(lpFile, "xhf%04d.%s", nID, lpExt);
	
	f = IFILEMGR_OpenFile (*ppFile, lpFile, _OFM_READ);
	if (!f)
	{
		bTemp = TRUE;
	}
	else
		IFILE_Release(f);
	
	
    IFILEMGR_Release(*ppFile);
    *ppFile = NULL;
	
	return bTemp;
}

boolean AddFavoriteIndex(IShell* pIShell,IFileMgr **ppFile, AECHAR * szName, long nType, char * szFile)
{
    IFile *f;
	
	// 打开文件,并移至文件末尾准备追加文件
    ISHELL_CreateInstance(pIShell, AEECLSID_FILEMGR, (void **)ppFile);
    if ((f = IFILEMGR_OpenFile (*ppFile, FAVORITE_FILE, _OFM_READ)) == NULL)
    {
        if (IFILEMGR_GetLastError (*ppFile) == EFILENOEXISTS)
        {
            f = IFILEMGR_OpenFile (*ppFile, FAVORITE_FILE, _OFM_CREATE);
        }
	}
	else
	{
        IFILE_Release(f);
		f = IFILEMGR_OpenFile (*ppFile, FAVORITE_FILE, _OFM_APPEND);
	}
	
	if (f)
	{// 保存信息
		long nLen;
		
		nLen = sizeof(AECHAR) * (WSTRLEN(szName) + 1) + 4 + sizeof(char) * (STRLEN(szFile) + 1);
		
		// chunk size
		IFILE_Write (f, &nLen, 4);
		
		// name
		IFILE_Write (f, szName, sizeof(AECHAR) * (WSTRLEN(szName) + 1));
		
		// type
		IFILE_Write (f, &nType, 4);
		
		// file name
		IFILE_Write (f, szFile, sizeof(char) * (STRLEN(szFile) + 1));
		
        IFILE_Release(f);
	}
	else
	{
		IFILEMGR_Release(*ppFile);
		*ppFile = NULL;
		return FALSE;
	}
	
    IFILEMGR_Release(*ppFile);
    *ppFile = NULL;
	return TRUE;
}

// 根据指定索引获取文件名称
boolean GetFavoriteByIndex(IShell* pIShell,IFileMgr **ppFile, long nIndex, char * szFile)
{
    IFile *f;
	boolean bResult = FALSE;
	
	// 打开文件
    ISHELL_CreateInstance(pIShell, AEECLSID_FILEMGR, (void **)ppFile);
    f = IFILEMGR_OpenFile (*ppFile, FAVORITE_FILE, _OFM_READ);
	
	// 查找文件名称
	if (f)
	{
		// 读取文件的所有信息
		char * szBuffer;
		long nLen, i = 1, nPos = 0;
		
		FileInfo pInfo;
		IFILE_GetInfo(f, &pInfo);
		
		nLen = pInfo.dwSize;
		szBuffer = (char*)MALLOC(nLen);
		
		IFILE_Read(f, szBuffer, nLen);
        IFILE_Release(f);
		
		// 找到指定的索引位置
		while (nPos < nLen)
		{
			AECHAR  * szAechar;
			char	* szChar;
			long	nTemp;
			
			// chunk size
			MEMCPY(&nTemp, szBuffer + nPos, 4);
			if (i == nIndex)
			{
				nPos += 4;	// chunk size
				szAechar = (AECHAR *)(szBuffer + nPos);	// name
				nPos += sizeof(AECHAR) * (WSTRLEN(szAechar) + 1);	
				nPos += 4;	// type
				
				// read file name
				if (nPos < nLen)
				{
					szChar = szBuffer + nPos;
					nTemp = STRLEN(szChar) + 1;
					if (nTemp > 256) nTemp = 256;
					
					MEMCPY(szFile, szChar, nTemp);
					
					bResult = TRUE;
				}
				
				break;
			}
			else
			{// skip this chunk
				i++;
				nPos += nTemp + 4;

				// 删去以前的信息
				if (nPos < nLen)
				{
					char * szTemp = NULL;
					szTemp = (char*)MALLOC(nLen - nPos);
					MEMCPY(szTemp, szBuffer + nPos, nLen - nPos);
					nLen -= nPos;
					nPos = 0;
					FREEIF(szBuffer);
					szBuffer = szTemp;
				}
			}
		}
		
		FREEIF(szBuffer);
	}
	
    IFILEMGR_Release(*ppFile);
    *ppFile = NULL;
	return bResult;
}

// 根据指定索引删除文件
boolean DeleteFavoriteByIndex(IShell* pIShell,IFileMgr **ppFile, long nIndex)
{
    IFile *f;
	boolean bResult = FALSE;
	
	// 打开文件
    ISHELL_CreateInstance(pIShell, AEECLSID_FILEMGR, (void **)ppFile);
    f = IFILEMGR_OpenFile (*ppFile, FAVORITE_FILE, _OFM_READ);
	
	// 查找文件名称
	if (f)
	{
		// 读取文件的所有信息
		char * szBuffer;
		long nLen, i = 1, nPos = 0, nChunkSize;
		
		FileInfo pInfo;
		IFILE_GetInfo(f, &pInfo);
		
		nLen = pInfo.dwSize;
		szBuffer = (char*)MALLOC(nLen);
		
		IFILE_Read(f, szBuffer, nLen);
        IFILE_Release(f);
		
		// 找到指定的索引位置
		while (nPos < nLen)
		{
			// chunk size
			MEMCPY(&nChunkSize, szBuffer + nPos, 4);
			if (i == nIndex)
			{
				break;
			}
			else
			{// skip this chunk
				i++;
				nPos += nChunkSize + 4;
			}
		}	
			
		// 删除这个索引区域
		if (nChunkSize + 4 == nLen)
		{
			IFILEMGR_Remove(*ppFile, FAVORITE_FILE);
		}
		else if ((nPos < nLen) && (nPos + nChunkSize + 4 <= nLen))
		{
			// 按位拷贝,把这个区域后面的内容拷到前面来
			for (i = 0; i < nLen - (nPos + nChunkSize + 4); i++)
			{
				MEMCPY(szBuffer + nPos + i, szBuffer + nPos + nChunkSize + 4 + i, 1);
			}
			nLen -= nChunkSize + 4;
			
			// 保存文件
			IFILEMGR_Remove(*ppFile, FAVORITE_FILE);
			f = IFILEMGR_OpenFile (*ppFile, FAVORITE_FILE, _OFM_CREATE);
			if (f)
			{
				IFILE_Write (f, szBuffer, nLen);
				IFILE_Release(f);
				
				bResult = TRUE;
			}
		}
		
		FREEIF(szBuffer);
	}
	
    IFILEMGR_Release(*ppFile);
    *ppFile = NULL;
	return bResult;
}

// 在指定的矩形范围显示文本
void ShowResString(IShell * pIShell, IStatic ** ppIStatic, AEERect * rect, AECHAR * szTitle, int16 nResId)
{
	if (ppIStatic == NULL) return;
	if (rect == NULL) return;
	
	if (*ppIStatic == NULL)
	{
		if (pIShell == NULL) return;
		ISHELL_CreateInstance(pIShell, AEECLSID_STATIC, (void * *)ppIStatic);
	}
	
    if (*ppIStatic) {
        AECHAR * szBuf = NULL;
        LoadTextMessage(pIShell, nResId, &szBuf, RES_FILE);
		
		if (szBuf == NULL) return;
		
        ISTATIC_SetText(*ppIStatic, szTitle, szBuf, AEE_FONT_BOLD, AEE_FONT_NORMAL);		
		ISTATIC_SetRect(*ppIStatic, rect);
        ISTATIC_SetProperties(*ppIStatic, ST_NOSCROLL|ST_MIDDLETEXT); 
        ISTATIC_SetActive(*ppIStatic, TRUE);
        ISTATIC_Redraw(*ppIStatic);
		
		if (szBuf) FREEIF(szBuf);
    }
	
}

int GetFreeMem(IShell* pIShell)
{
	int				freemem;
	IHeap			*ih;
	AEEDeviceInfo	di;
	
	if(!pIShell) return -1;
	if(SUCCESS != ISHELL_CreateInstance(pIShell,AEECLSID_HEAP,(void**)&ih)){
		return -1;
	}
	
	ISHELL_GetDeviceInfo(pIShell,&di);
	freemem = di.dwRAM - IHEAP_GetMemStats(ih);
	
	IHEAP_Release(ih);
	
	return freemem;
}

boolean CheckFileSpace(IShell* pIShell)
{
/*
	uint32 freesize = 0;
	IFileMgr *filemgr;
	
	
	filemgr = NULL;
	if(AEE_SUCCESS != ISHELL_CreateInstance(pIShell, AEECLSID_FILEMGR, (void **)&filemgr)){
		return FALSE;
	}
	if(filemgr == NULL){
		return FALSE;
	}
	if(0 == IFILEMGR_GetFreeSpace(filemgr,&freesize)){
		IFILEMGR_Release(filemgr);
		return FALSE;
	}
	if(freesize < MIN_FILE_FREESPACE){
		IFILEMGR_Release(filemgr);
		return FALSE;
	}
	
	IFILEMGR_Release(filemgr);
	return TRUE;
*/

	uint32 freesize = GETFSFREE(NULL);
	if(freesize < MIN_FILE_FREESPACE){
		return FALSE;
	}
	
	return TRUE;
	
}
boolean	MemCheckAvail(IShell* pIShell,int blocksize)
{
	IHeap *ih;
	boolean result;
	
	if(SUCCESS != ISHELL_CreateInstance(pIShell,AEECLSID_HEAP,(void**)&ih)){
		return FALSE;
	}
	
	result = IHEAP_CheckAvail(ih,blocksize);
	
	IHEAP_Release(ih);

	return result;
}

uint32 GetFileSpace(IShell* pIShell)
{
/*
	uint32 freesize = 0;
	IFileMgr *filemgr;
	
	
	filemgr = NULL;
	if(AEE_SUCCESS != ISHELL_CreateInstance(pIShell, AEECLSID_FILEMGR, (void **)&filemgr)){
		return 0;
	}
	if(filemgr == NULL){
		return 0;
	}
	if(0 == IFILEMGR_GetFreeSpace(filemgr,&freesize)){
		IFILEMGR_Release(filemgr);
		return 0;
	}
	
	IFILEMGR_Release(filemgr);
	return freesize;
*/

	uint32 freesize = GETFSFREE(NULL);
	
	return freesize;
	
}

void DrawPicRect(IImage *img, int xoff, int yoff, int cx, int cy)
{
	if (img)
	{
		long cxImg, cyImg;

		AEEImageInfo info;
		IIMAGE_GetInfo(img, &info);

		cxImg = info.cx;
		cyImg = info.cy;

 		IIMAGE_Draw(img, xoff + (int)((cx - cxImg) / 2), yoff + (int)((cy - cyImg) / 2));
	}
}

⌨️ 快捷键说明

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