您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术嵌入式系统多语言文本解决方案 正文
嵌入式系统多语言文本解决方案

嵌入式系统多语言文本解决方案

点击数:7980 次   录入时间:03-04 11:45:20   整理:http://www.55dianzi.com   嵌入式系统-技术

  break;

  case TXT_LANG_FRANCE:

  strFile = TXT_FILE_FRANCE;

  break;

  case TXT_LANG_ITALY:

  strFile = TXT_FILE_ITALY;

  break;

  case TXT_LANG_ARABIA:

  strFile = TXT_FILE_ARABIA;

  break;

  case TXT_LANG_PORTUGAL:

  strFile = TXT_FILE_PORTUGAL;

  break;

  case TXT_LANG_HINDI:

  strFile = TXT_FILE_HINDI;

  break;

  case TXT_LANG_TURKISH:

  strFile = TXT_FILE_TURKISH;

  break;

  case TXT_LANG_VIETNAM:

  strFile = TXT_FILE_VIETNAM;

  break;

  case TXT_LANG_SWIDISH:

  strFile = TXT_FILE_SWIDISH;

  break;

  case TXT_LANG_POLISH:



www.55dianzi.com

  strFile = TXT_FILE_POLISH;

  break;

  default:

  return NULL;

  }

  //打开配置文件并检查其格式

  if ((fd = open(strFile, O_RDONLY)) == -1)

  {

  return NULL;

  }

  if (read(fd, &fh, 16) != 16)

  {

  close(fd);

  return NULL;

  }

  if (fh.lFileType != 0x4746432E || fh.lVersionNum != 0x32303156)

  {

  close(fd);

  return NULL;

  }

  //在文本映射区内查找匹配的文本索引

  for (iOff = fh.lMapOffset; iOff < fh.lDataOffset; iOff += 8)

  {

  if (read(fd, &map, 8) != 8)

  {

  close(fd);

  return NULL;

  }

  if (map.wTextIndex == lIndex)

  {

  break;

  }

  }

  if (iOff >= fh.lDataOffset)

  {

  close(fd);

  return NULL;

  }

  //根据找到的文本映射来读取文本内容

  if (!(pBuf = GuiMemAlLOC(map.wTextSize + 2)))

  {

  close(fd);

  return NULL;

  }

  lseek(fd, fh.lDataOffset + map.LTExtOffset, SEEK_SET);

  if (read(fd, pBuf, map.wTextSize) != map.wTextSize)

  {

  GuiMemFree(pBuf);

  close(fd);

  return NULL;

  }

  pBuf[map.wTextSize >> 1] = 0;

  //建立字符串对象

  pTxt = CreateStringDirect(pBuf);

  GuiMemFree(pBuf);

  close(fd);

  return pTxt;

  }

  //定义与字符串相关的数据结构

  #ifndef GUI_STRING_STRUCT

  typedef struct _string

  {

  WORD wWidth; //字符串宽度,字符串输出时的总点阵宽度

  WORD wLength; //字符串长度,不包括''

  WORD * pContent; //字符串内容,以''结尾

  } GUISTRING;

  //结束与字符串相关的数据结构的定义

  #define GUI_STRING_STRUCT

  #endif

  /***

www.55dianzi.com

  * 功能:

  根据指定的信息直接建立字符串,函数返回字符串指针

  * 参数:

  1.WORD * pContent: 字符串内容

  * 返回:

  成功返回字符串指针

  失败返回NULL

  * 备注:

  ***/

  GUISTRING * CreateStringDirect(WORD * pContent)

  {

  GUISTRING * pStr;

  //尝试为字符串分配内存

  if (!(pStr = GuiMemAlLOC(sizeof(GUISTRING))))

  {

  PRINT_INF(CreateStringDirect Err0!);

  return NULL;

  }

  //字符串内容为空,建立一个空字符串对象

  if (!pContent)

  {

  pStr->wWidth = 0;

上一页  [1] [2] [3]  下一页


本文关键字:嵌入式  解决方案  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术