一种程序界面文字换肤方法
来源:互联网 发布:打印监控软件 破解 编辑:程序博客网 时间:2024/05/12 14:23
一种程序界面文字换肤方法
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就不可以了。但我们可以使用宏定义来达到此类目的,宏的定义与如下形式相似:
#defineGET_DICTIONARY(key)get_dictionary("app.dic", "app", key)
这样,不管是常量还是变量字符串,我们都可以使用GET_DICTIONARY来给赋值。
4、一个简单的例子
- /*
- * demo.dic
- */
- [demo]
- DEMO_ZH=这是一个演示
- DEMO_US=this is a demo
- /*
- * dict.h
- */
- #ifndef _DICT_H
- #define _DICT_H
- inline char *get_dictionary(char *dictionary, char *section, char *key)
- {
- //根据具体情况实现
- }
- #endif
- /*
- * demo.c
- */
- #include "dict.h"
- #define GET_DICTIONARY(key) get_dictionary("demo.dic", "demo", key)
- int main(int argc, char *argv[])
- {
- printf("%s/n", GET_DICTIONARY("DEMO_ZH"));
- printf("%s/n", GET_DICTIONARY("DEMO_US"));
- return 0;
- }
- 一种程序界面文字换肤方法
- 一种程序界面文字换肤方法
- SkinLoad程序界面换肤工具
- SkinLoad程序界面换肤工具
- SkinLoad程序界面换肤工具
- vc界面换肤程序源代码
- 关于程序界面换肤的问题--解决
- c#界面换肤
- 界面换肤技术
- 界面换肤的两种实现方法
- 一种界面需求分析方法
- 一种界面需求分析方法
- 一种界面需求分析方法
- 一种界面需求分析方法
- Qt之界面换肤
- MFC界面换肤美化
- 界面换肤,界面自绘源码
- 换肤测试程序
- 手把手教你用C#打包应用程序(安装程序)【卸载模块已添加】
- 目前搜索引擎主要检索服务
- 电子商务网站必须要解决的若干技术问题
- 使用NSIS制作安装包(1)
- 产品设计——互联网产品设计
- 一种程序界面文字换肤方法
- 使用NSIS制作安装包(2)
- 使用log4j为Tomcat输出日志
- jsp自定义标签体验
- 敏捷开发的必要技巧:移除重复代码
- ajax:改善用户体验之进度条
- 成为Eclipse热键高手
- eclipse快捷键
- GIF解码和编码操作库源码