首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> 桌面开发 >> VC >> 正文
VC开发多语言界面支持的简单方法
来源:ChinaItLab 作者:佚名 时间:2007-9-6


  读取语言包配置信息:

BOOL CIniFile::GetSectionValues(CString Section, CStringArray &strItemBuf, CStringArray &strValueBuf)
...{
BOOL bRead = FALSE;
ReadIniFile();//打开文件

if(bFileExist == FALSE || FileContainer.GetSize() < 0)
return bRead;//文件打开出错或文件为空,返回默认值

int i = 0;
int iFileLines = FileContainer.GetSize();
CString strline,str;

while(i<iFileLines)
...{
strline = FileContainer.GetAt(i++);

strline.TrimLeft();
if(strline.GetLength()<=0)
continue; //跳过空行
if(strline.Left(2)=="//")
continue; //跳过注释行
if(strline.GetAt(0)=='[')//查找Section,第一个必须为[
...{
str=strline.Left(strline.Find("]"));//去掉]右边
str=str.Right(str.GetLength()-str.Find("[")-1);//去掉[左边

str.TrimLeft();
str.TrimRight();

if(Section == str)//找到Section
...{
while(i<iFileLines)
...{
strline = FileContainer.GetAt(i++);
strline.TrimLeft();
if(strline.GetLength()<=0)
continue; //跳过空行
if(strline.GetAt(0)=='[')
return bRead;//如果到达下一个[],即找不到,返回默认值
if(strline.Left(2)=="//")
continue; //跳过注释行

str = strline.Left(strline.Find("="));//去掉=右边
str.TrimLeft();
str.TrimRight();
//保存等号左边项
strItemBuf.Add(str);

str=strline.Right(strline.GetLength()-strline.Find("=")-1);//去掉=左边
str.TrimLeft();
str.TrimRight();
//保存等号右边项
strValueBuf.Add(str);
bRead = TRUE;
}
//当前Section遍历结束
}
//没有找到Section
}
//当前行遍历结束
}
return bRead;
}

  修改指定组件Caption属性代码:

BOOL CLanguageManager::setControlCaption(CWnd * pCtrl, UINT ctrlID)
...{
 BOOL isOK=FALSE;
 for(int i=0;i<m_vtContexts.size();i++)
...{
  isOK = (m_vtContexts[i].uCtrlID==ctrlID);
  if(isOK)
  ...{
    pCtrl->SetWindowText(m_vtContexts[i].strContext);
    break;
   }
 }
 return isOK;
}

  遍历设置指定窗口所有组件Caption属性代码:

void CLanguageManager::setCaptionForWindow(CWnd * pWnd)
...{
  //枚举对话框中所有组件

  CWnd *pCtrl = pWnd->GetWindow(GW_CHILD);
  while(pCtrl!=NULL)
  ...{
   UINT ctrlID = pCtrl->GetDlgCtrlID();
   setControlCaption(pCtrl,ctrlID);
   pCtrl = pCtrl->GetNextWindow();
  }
}

上一页  [1] [2] 

【责编:Youping】
中国IT教育热线咨询
相关文章
几种VC++数据库开发技术的相对比较
利用C#实现标注式消息提示窗口
用C#创建COM对象
Visual C#多线程参数传递浅析…
Visual C#多线程参数传递浅析…
Visual C++设计超强仿QQ自动伸缩窗口…
浅析JSP开发中的对象和范围属性
VC中利用MFC设计绘图程序初步
VC中三种常见中文内码的转换方法
浅谈Java桌面应用程序开发
推荐文章

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·框架:J2EE WEB应用架构分析…03-13
·几种VC++数据库开发技术的相对比…03-13
·利用C#实现标注式消息提示窗口03-13
·用C#创建COM对象03-13
·Visual C#多线程参数传递浅析…03-13
·Visual C#多线程参数传递浅析…03-13
·基于HOOK和MMF的Win密码渗透技术11-15
·Visual C++设计超强仿QQ自动伸缩…11-15
·Java SE 6.0实现高质量桌面集成开…11-15
·史玉柱东山再起幕后高人11-15
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视…07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05