`
javasalatu
  • 浏览: 725642 次
  • 性别: Icon_minigender_2
  • 来自: 北京
博客专栏
96df99eb-e89d-3228-9c8e-967fc745ec52
程序员的自我经营之道
浏览量:7715
文章分类
社区版块
存档分类
最新评论

一种程序界面文字换肤方法

 
阅读更多
一种程序界面文字换肤方法
Aiguille.LIU
2008-11-23

  对于GUI程序,界面上会呈现许多图片和文字信息。图片一般都是运行时从外部载入的,更换比较容易。然而,文字信息大多情况下都是直接写在程序代码中的。这种情况下,如果想更换文字,就需要重新编译程序,非常不方便。这里介绍一种程序界面文字换肤方法,可以无须重新编译程序而实现方便的文字换肤功能,可用于OEM或多语言情形。

1、字典库
  所有界面中呈现的文字都存储在该典库中,它是一个独立于程序的文件。文件可以是纯文本的、加密文本的、动态链接库或其他任何形式。程序运行时,从字典库中读取所需的文字信息。因此,当需要修改相关界面文字时,只需要修改字典库,然后发布即可,应用程序不需要修改和重新编译。例如app.dic:

[app]
APP_NAME=程序名
APP_CAPTION=程序标题
APP_VERSION=程序版本
APP_COPYRIGHT=程序版权

2、字典库访问接口API
  这里的API主要只有一个,即从字典库中提取文字信息。函数原型可以如下:

char *get_dictionary(char *dictionary, char *section, char *key);

其中,dictionary是字典文件名;section是分节名,如上面的[app];key为指定的文字信息标识;返回值为字典库中对应的文字信息。至于具体实现,可以根据实际情况而定。其实,很多开发工具都提供了类似的API,我们只要在其基础上作简单封装即可。
  

3、程序中调用
  程序中需要使用文字信息时,直接调用get_dictionary()即可得到所需的文字。然而,某些情况下需要使用常量形式的文字信息,比如初始化结构或类时。这时,使用API就不可以了。但我们可以使用宏定义来达到此类目的,宏的定义与如下形式相似:

#define GET_DICTIONARY(key) get_dictionary("app.dic", "app", key)

  这样,不管是常量还是变量字符串,我们都可以使用GET_DICTIONARY来给赋值。

4、一个简单的例子
  1. /*
  2. *demo.dic
  3. */
  4. [demo]
  5. DEMO_ZH=这是一个演示
  6. DEMO_US=thisisademo
  7. /*
  8. *dict.h
  9. */
  10. #ifndef_DICT_H
  11. #define_DICT_H
  12. inlinechar*get_dictionary(char*dictionary,char*section,char*key)
  13. {
  14. //根据具体情况实现
  15. }
  16. #endif
  17. /*
  18. *demo.c
  19. */
  20. #include"dict.h"
  21. #defineGET_DICTIONARY(key)get_dictionary("demo.dic","demo",key)
  22. intmain(intargc,char*argv[])
  23. {
  24. printf("%s/n",GET_DICTIONARY("DEMO_ZH"));
  25. printf("%s/n",GET_DICTIONARY("DEMO_US"));
  26. return0;
  27. }

分享到:
评论

相关推荐

    Delphi专业 界面 控件Skin++ For Delphi (一)

    第一种,纯图片的分段式进度条; 第二种,图片和文字混合的平滑型进度条,文字可以准备显示当前进度值。 第三种,颜色和文字混合的平滑型进度条,文字可以准备显示当前进度值。 第四种,纯颜色的渐变型进度条。 ...

    皮肤控件研究文档,破解后的库文件,皮肤设计工具使用教程

    面库的设计风格,相信会让您了解一种全新的界面产品设计理念,给您的界面开发带来启发。  产品稳定性 近期的客户:长江证券 广州因豪集团 易酷创新 IM即时聊天类的客户比较多  界面配置灵活性 需要熟悉xml...

    vc++ 应用源码包_1

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    Delphi 专业 界面 控件 Skin++ For Delphi(二)

    第一种,纯图片的分段式进度条; 第二种,图片和文字混合的平滑型进度条,文字可以准备显示当前进度值。 第三种,颜色和文字混合的平滑型进度条,文字可以准备显示当前进度值。 第四种,纯颜色的渐变型进度条。 ...

    住哪联盟酒店分销程序 X4程序 内测版.rar

    2. 程序安装:请打开网站安装程序页面:若是文件上传至网站根目录,则直接访问您网站的域名则可打开安装界面,若您文件是上传到二级目录,同理访问您网站的二级目录则可。 3. 开始安装: a) 推广ID和接口Key配置...

    vc++ 应用源码包_6

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    vc++ 应用源码包_2

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    vc++ 应用源码包_5

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    vc++ 应用源码包_3

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    零一锁屏王 v8.81.rar

    7.换肤功能:可选择多达6种皮肤,随时改变软件界面  零一锁屏王的安装     把下载好的安装包解压到当前文件夹,之后双击【spdata.msi】运行文件进行安装,打开的时候会出现安装框,依次开始安装,依照步骤...

    vc++ 开发实例源码包

    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...

    Grid++Report 5.0 测试版,欢迎下载试用并报告问题

    内嵌简体中文支持,其它语言文字嵌入到一个对应资源DLL文件,支持一种语言只要进行文字翻译即可。目前版本支持简体中文、繁体中文与英文。 控件界面实现背景换肤(Skin)功能,让控件与用户的软件界面更加融为一体。 ...

    秋秋网页下载器 V3.3.zip

    9.动态换肤,十种华丽界面, 10.最小化到后台运行。 上网的时候有些网页想随手保存下来,这时只要打开秋秋网页下载器,直接把ie里的链接拖动到悬浮窗口就可以保存了。或者要保存一个网页上许多的图片,多媒体等...

    零一锁屏王 v8.8

    零一锁屏王是一款超好用的电脑智能锁屏/定时锁屏/自动关机/一键锁屏软件,功能很贴合广大计算机用户的需求。大家知道Windows自带的屏幕保护程序是不大给力的,本...7.换肤功能:可选择多达6种皮肤,随时改变软件界面

    公司年会大屏幕抽奖

    更新:更新了上墙换肤图相关的一个js错误。 更新:优化一键安装流程,精简代码,降低服务器要求 更新:不再要求开启php短标签支持,适用更多的服务器 更新:修改二维码存放目录,并在安装时检测存放目录的权限 2015.12....

    Kingsoft WPS Office Pro 2016 v10.8.0.5391 专业增强版.zip

    WPS 2013为用户准备了四套皮肤界面,用户可以根据自己的喜好对产品进行换肤。WPS为喜欢尝鲜的用户准备了2款2013风格的皮肤,分别是素雅黑和清新蓝。同时也为习惯使用老版本的用户准备2012风格和经典风格的皮肤。 ...

Global site tag (gtag.js) - Google Analytics