1、 const tchar_t* LangStr(int Class, int Id)
如:LangStr(ABOUT_ID,ABOUT_TITLE)
typedef struct stringdef
{
int Class;
int Id;
} stringdef;
/*查找相关类*/
const tchar_t* LangStr(int Class, int Id)
{
int n;
context* p = Context();
bool_t Found;
//下面主要是结构体赋值问题
stringdef Def;
stringdef* Ptr= &Def;
Def.Class = Class;
Def.Id = Id;
//线程上锁
LockEnter(p->StrLock);
for (n=0;n<2;++n)
{
//查找数组 返回位置
int Pos = ArrayFind(&p->StrTable[n],ARRAYCOUNT(p->StrTable[n],stringde), sizeof(stringdef*),&Ptr,(arraycmp)CmpDef,&Found);
//存在
if (Found)
{
LockLeave(p->StrLock);
return (tchar_t*)(ARRAYBEGIN(p->StrTable[n],stringdef*)[Pos]+1);
}
}
//不存在
LockLeave(p->StrLock);
return T("");
}
2、函数WinLabel(win* p,winunit* DlgTop,winunit DlgLeft,winunitDlgWidth,const tchar_t* Msg,int FontSize,int Flags,wincontrol* Ref)
如:WinLabel(&p->Win,&y,-1,-1,T("The Core Pocket Media Player"),12,LABEL_BOLD|LABEL_CENTER,NULL);
2、 菜单
1.1
ABOUT_COPYRIGHT //版权所有
ABOUT_DUMP // 转储设置
static const menudef MenuDef2[] =
{
{0, PLATFORM_ID, PLATFORM_DONE},
{0, ABOUT_ID, ABOUT_OPTIONS},
{1, ABOUT_ID, ABOUT_DUMP},
{1, ABOUT_ID, ABOUT_COPYRIGHT},
MENUDEF_END
};
1.2
static const menudef MenuDef[] =
{
{0, PLATFORM_ID, PLATFORM_DONE},
{0, ABOUT_ID, ABOUT_DUMP},
#ifdef WINSHOWHTML
{0, ABOUT_ID, ABOUT_COPYRIGHT},
#endif
MENUDEF_END
};