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

📄 ifile.c

📁 事例介绍brew中文件接口的操作,包括读文件、写文件、以及对文件的操作。适合初学者。
💻 C
📖 第 1 页 / 共 2 页
字号:
			IFILEMGR_Release(pApp->pIFileMgr);
			return FALSE;
		}
		if(IFILE_Write(pIFile,&userInfo[i].score,sizeof(userInfo[i].score))!=sizeof(userInfo[i].score))
		{
			IFILE_Release(pIFile);                       //关闭文件
			IFILEMGR_Remove(pApp->pIFileMgr,"test.txt"); //删除文件
			IFILEMGR_Release(pApp->pIFileMgr);
			return FALSE;
		}
   
	}
	IFILE_Seek(pIFile,_SEEK_START,0);//文件读完,移动文件指针到首位
	IFILE_Release(pIFile); 
    return TRUE;
}
/////////////////////////////////////////////////////////////////////
//读文件并排序
static boolean File_Sort(CMenu *pApp)
{
    IFile *pIFile;
	UserInfo userInfo[10];
	UserInfo tempInfo;
	AECHAR szText[30];
	int  temp=0;
	int flag=0;
	int i,j;	
    if((pIFile=IFILEMGR_OpenFile(pApp->pIFileMgr,"test.txt", _OFM_READWRITE ))==NULL)
	{
		ISHELL_LoadResString(pApp->a.m_pIShell,IFILE_RES_FILE,IDS_INFO,szText,sizeof(szText));
        DevDrawDialog(pApp,(const AECHAR *)szText);
		pApp->m_nState=STATE_KEYCREATE;
		return FALSE;
	}
	 /*读文件*/
	for(i=0;i<10;i++)
	{
		IFILE_Read(pIFile,userInfo[i].userName,sizeof(userInfo[i].userName));
		IFILE_Read(pIFile,&userInfo[i].score,sizeof(userInfo[i].score));

	} 
	/*选择插入排序*/
	for(i=0;i<10;i++)
	{
       
		strcpy(tempInfo.userName,userInfo[i].userName);
	    tempInfo.score=userInfo[i].score;
		flag=i;
        for (j=i+1;j<10;j++)	
		  if(tempInfo.score<userInfo[j].score)
		  {
             tempInfo.score=userInfo[j].score;
		   	 strcpy(tempInfo.userName,userInfo[j].userName);
			 flag=j;
		  }
        strcpy(userInfo[flag].userName,userInfo[i].userName);
        userInfo[flag].score=userInfo[i].score;
	    strcpy(userInfo[i].userName,tempInfo.userName);		
        userInfo[i].score=tempInfo.score;
	}
    IFILE_Seek(pIFile,_SEEK_START,0);//移动文件指针到首位
	/*将排序的文件写入文件*/
     for(i=0;i<10;i++)
	 { 

		 IFILE_Write(pIFile,userInfo[i].userName,sizeof(userInfo[i].userName));
         IFILE_Write(pIFile,&userInfo[i].score,sizeof(userInfo[i].score));
	 }
    IFILE_Release(pIFile);
    return TRUE;	
}
//////////////////////////////////////////////////////////////////////
//显示文件内容
static boolean File_Show(CMenu *pApp)
{	
    IFile *pIFile;
	UserInfo userInfo[10];
    AECHAR szText[50];
	int sum=0;
	int i;
            	
    if((pIFile=IFILEMGR_OpenFile(pApp->pIFileMgr,"test.txt",_OFM_READ))==NULL)
	{
	    ISHELL_LoadResString(pApp->a.m_pIShell,IFILE_RES_FILE,IDS_INFO,szText,sizeof(szText));
        DevDrawDialog(pApp,(const AECHAR *)szText);
		pApp->m_nState=STATE_KEYUP;
	    return FALSE;
	}
    for(i=0;i<10;i++)
	{
	    IFILE_Read(pIFile,userInfo[i].userName,sizeof(userInfo[i].userName));
		IFILE_Read(pIFile,&userInfo[i].score,sizeof(userInfo[i].score));

	}                 //读文件
    IFILE_Release(pIFile); 
	for(i=0;i<10;i++)
    { 	
        STR_TO_WSTR(userInfo[i].userName,szText+sum,sizeof(szText));
	    sum+=strlen(userInfo[i].userName);						  
	    FLOAT_TO_WSTR(userInfo[i].score,szText+sum,sizeof(szText));
		sum+=12;
		

	}
	DevDrawDialog(pApp,(const AECHAR *)szText);
	pApp->m_nState=STATE_KEYUP;
	return TRUE;
}				  	
//////////////////////////////////////////////////////////////////////
//初始化应用程序数据
static boolean menu_InitAppData(CMenu *pApp)
{
AEEDeviceInfo deviceInfo;

if(ISHELL_CreateInstance(pApp->a.m_pIShell,AEECLSID_MENUCTL,
		(void **)&pApp->pMenuCtl)!=SUCCESS)      //创建标准菜单接口

		return FALSE;
if(ISHELL_CreateInstance(pApp->a.m_pIShell,AEECLSID_FILEMGR,
		(void **)&pApp->pIFileMgr)!=SUCCESS)      //创建文件接口

		return FALSE;

ISHELL_GetDeviceInfo(pApp->a.m_pIShell,&deviceInfo);
pApp->m_nLineHeight = IDISPLAY_GetFontMetrics(pApp->a.m_pIDisplay,
											  AEE_FONT_NORMAL,
											  NULL,
											  NULL);//常用字体的高度
pApp->m_nLargeLineHeight= IDISPLAY_GetFontMetrics(pApp->a.m_pIDisplay,
												  AEE_FONT_LARGE,
												  NULL,
												  NULL);//LARGE字体的高度
pApp->m_nScrHeight = deviceInfo.cyScreen;              //屏幕高度
pApp->m_nScrWidth = deviceInfo.cxScreen;               //屏幕宽度
SETAEERECT(&pApp->m_nClntAreaRect,
		   0,
		   0,
		   deviceInfo.cxScreen,
		   deviceInfo.cyScreen-pApp->m_nLargeLineHeight);
          
		   return TRUE;
}
////////////////////////////////////////////////////////////////////////
//资源释放
static void menu_FreeAppData(CMenu * pApp)
{
	IMENUCTL_Release(pApp->pMenuCtl);
	IFILEMGR_Release(pApp->pIFileMgr);
}
///////////////////////////////////////////////////////////////////////
//绘制菜单及对菜单项进行设置
static boolean menu_Start(CMenu * pApp)
{
	CtlAddItem rMenuItem;      //定义可包含图标的菜单项
	AEERect nRect;             //矩形变量 
	AEEItemStyle nNormal;      //定义菜单的样式变量
	AEEItemStyle nSel;
	IMENUCTL_Reset(pApp->pMenuCtl);              //指定菜单控件?
	IMENUCTL_SetActive(pApp->pMenuCtl,FALSE);    //将菜单控件设置为非活动中?
	rMenuItem.pText = NULL;
	rMenuItem.pImage = NULL;                     //若不用一定要赋予空
	rMenuItem.pszResImage = rMenuItem.pszResText = IFILE_RES_FILE;//将图像和文本资源指向资源文件
	/* 设定菜单选项,并添加菜单*/
	IMENUCTL_SetTitle(pApp->pMenuCtl,IFILE_RES_FILE,IDS_TITLE,NULL);
	rMenuItem.wFont = AEE_FONT_NORMAL;                      
	rMenuItem.wText = IDS_CREATE;
	rMenuItem.wImage = IDB_CREATE;
	rMenuItem.wItemID = IDS_CREATE;                            //设置菜单项的ID,必须唯一
	IMENUCTL_AddItemEx(pApp->pMenuCtl,&rMenuItem);             //添加菜单项
	rMenuItem.wFont = AEE_FONT_NORMAL;                      
	rMenuItem.wText = IDS_SORT;
	rMenuItem.wImage = IDB_SORT;
	rMenuItem.wItemID = IDS_SORT;                           
	IMENUCTL_AddItemEx(pApp->pMenuCtl,&rMenuItem);
	rMenuItem.wText = IDS_SHOW;
	rMenuItem.wImage = IDB_SHOW;
	rMenuItem.wItemID = IDS_SHOW;
	IMENUCTL_AddItemEx(pApp->pMenuCtl,&rMenuItem);
	/*rMenuItem.wFont = AEE_FONT_NORMAL;                      
	rMenuItem.wText = IDS_OK;
	rMenuItem.wImage = IDB_OK;
	rMenuItem.wItemID = IDS_OK;                       
	IMENUCTL_AddItemEx(pApp->pMenuCtl,&rMenuItem);*/
    nNormal.ft = AEE_FT_NONE;
	nNormal.xOffset = nNormal.yOffset =0;
	nNormal.roImage = AEE_RO_TRANSPARENT;
	nSel.ft = AEE_FT_RAISED;
	nSel.xOffset = nSel.yOffset = 0;
	nSel.roImage =AEE_RO_TRANSPARENT;
	IMENUCTL_SetStyle(pApp->pMenuCtl,&nNormal,&nSel);            //设置菜单在正常和被选择情况下的状态
    IMENUCTL_SetProperties( pApp->pMenuCtl,IMENUCTL_GetProperties( pApp->pMenuCtl )&~(MP_ICON_TEXT_TOP) );//设置菜单控件的属性
    SETAEERECT( &nRect, 0, 0, pApp->m_nScrWidth, pApp->m_nScrHeight );
    IMENUCTL_SetRect( pApp->pMenuCtl, &nRect );                 //绘制菜单的范围
    IMENUCTL_SetActive( pApp->pMenuCtl, TRUE );                 //将菜单设置为活动状态
    pApp->m_nState = STATE_MAINMENU;      
    return TRUE;
}
////////////////////////////////////////////////////////////////////////////////////////
//绘制对话框,显示文件内容
static void DevDrawDialog(CMenu * pApp,const AECHAR *szText)
{
    const AECHAR *p;
    AEERect nRect;
    int nFits = 0;
    int width = 0;                                           //实际的像素宽度
    int height = pApp->m_nLineHeight;
    int length = 0;	
    int max_width = pApp->m_nClntAreaRect.dx - 10;    
    p = szText;
    while(*p)
    {
        width = IDISPLAY_MeasureTextEx(pApp->a.m_pIDisplay,
            AEE_FONT_NORMAL,
        	p,
        	-1,
            max_width,
            &nFits);
       height += pApp->m_nLineHeight;
        p+=nFits;
    }
     if(height > pApp->m_nLineHeight + pApp->m_nLineHeight)//文本内容多于一行时
       width = max_width;
    SETAEERECT(&nRect,(pApp->m_nClntAreaRect.dx-width)/2-DIALOG_BORDER_WIDTH,(pApp->m_nClntAreaRect.dy-height)/2,width+DIALOG_BORDER_WIDTH,height);
    IDISPLAY_DrawRect(pApp->a.m_pIDisplay,&nRect,kColorClearDialogBox,kColorClearDialogBackGround,IDF_RECT_FRAME|IDF_RECT_FILL);
    /* 绘制文本*/
    nRect.x += DIALOG_BORDER_WIDTH;                        //加上对话框的宽度
    nRect.dx -= DIALOG_BORDER_WIDTH;
    p = szText;
    height = nRect.y+pApp->m_nLineHeight/2;
    while(*p)
    {
        width = IDISPLAY_MeasureTextEx(pApp->a.m_pIDisplay,
            AEE_FONT_NORMAL,
        	p,
        	-1,
           max_width-16,
            &nFits);
        IDISPLAY_DrawText(pApp->a.m_pIDisplay,
            AEE_FONT_NORMAL,
        	p,
           nFits,
            nRect.x,
            height,
            &nRect,
            IDF_TEXT_TRANSPARENT);
        p+=nFits;
        height +=pApp->m_nLineHeight;
    }
    IDISPLAY_Update(pApp->a.m_pIDisplay);
}

⌨️ 快捷键说明

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