📄 ifile.c
字号:
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 + -