原文地址:http://blog.csdn.net/wooin/archive/2008/06/24/2583144.aspx


用Microwindows(Nano-X)编写中文程序

By:

吴垠

Date:

2008-06-24

Homepage:

http://blog.csdn.net/wooin

Email:

lazy.fox.wu#gmail.com

Copyright

该文章版权由吴垠和他可爱的老婆小包子所有。可在非商业目的下任意传播和复制。对于商业目的下对本文的任何行为需经作者同意。

Link:

http://blog.csdn.net/wooin/archive/2008/06/24/2583144.aspx

1.

从代码中留下的蛛丝马迹可以看出来Microwindows在开发时有中国人的参 与,并且完成了支持中文的字体引擎开发,所以今天的Microwindows才可以显示中文。
需要说明的是,Microwindows支持的中文字符集是GB2312,并不是Unicode,所以在开发Microwindows中文程序时要使用 GB2312的字符集,这应该算是一个缺陷吧。
下面我就来介绍如何编写中文的Microwindows程序:

2.

首选要下载microwindows的字体文件:microwindows- fonts-0.90.tar.gz。可以在Microwindows的 ftp上找到。下载到该文件后,假设你的microwindows源码目录是类似于这样的一个目录:
NANOX=/home/bbw/microwindows-0.90

microwindows-fonts-0.90.tar.gz解压后将“fonts/”文件夹中的内容都拷贝到“$(NANOX) /src/fonts/”文件夹中

3.

修改文件:

修 改文件“$(NANOX)/src/config”文件第197、198行:

HAVE_HZK_SUPPORT        = N
HZK_FONT_DIR             = "fonts/chinese"
改为:
HAVE_HZK_SUPPORT        = Y
HZK_FONT_DIR             = "/home/bbw/microwindows-0.90/src/fonts/chinese"

启用汉字支持功能,并且设置字体文件的路径。

4.

接下来就要开始编写中文程序了:

我们接着上一篇文章《用Microwindows (Nano-X)编写“hello world”》中程序做,对这个程序之用做几处修改就好 了,下面是程序的完整源代码,你可以参照着上一篇文章看看我做了哪些修改:

1 /***************************************************************************
 2  *  Filename    : hello.c
 3  *  Begin       : 2008-05-09 16:24:44
 4  *  Project     : Hello Nano-X World
 5  *  Version     : 1.1
 6  *  Copyright   : GPL v2.0
 7  *  Author      : Wu Yin (吴垠)
 8  *  Description :
 9  *  Email       : lazy.fox.wu#gmail.com
10  **************************************************************************/
11 #include
12 #include "nano-X.h"
13 #include "nxcolors.h"
14
15 int main()
16 {
17     GR_WINDOW_ID root_wid, wid;
18     GR_GC_ID gc;
19     GR_COORD x, y;
20     GR_SIZE width, height;
21     GR_EVENT event;
22     GR_FONT_ID fid;
23
24     x = 0;
25     y = 0;
26     width = 640;
27     height = 480;
28
29     if (GrOpen() < 0)
30     {
31         printf("Can't open graphics ");
32         return 0;
33     }
34
35     gc = GrNewGC();
36     fid = GrCreateFont("HZKFONT", 16, NULL);
37     // 创建父窗口(根窗口)
38     root_wid = GrNewWindow(GR_ROOT_WINDOW_ID, x, y, width, height,
39             1, GR_COLOR_ROYALBLUE, GR_COLOR_BLACK);
40     // 创建一个子窗口
41     wid=GrNewWindow(root_wid,60,60,200,60,1,GR_COLOR_BLACK,GR_COLOR_WHITE);
42     GrMapWindow(root_wid);  // 绘制父窗口
43     GrMapWindow(wid);       // 绘制子窗口
44
45     // 显示在父窗口中的文字
46     GrSetGCForeground(gc, GR_COLOR_RED);   // 前景色(字体颜色)
47     GrSetGCBackground(gc, GR_COLOR_GREEN); // 背景色(字体背景颜色)
48     GrSetGCFont(gc, fid);
49     GrText(root_wid, gc, 10, 20, "你好 in root_wid", -1, GR_TFBOTTOM);
50
51     // 显示在子窗口中的文字
52     GrSetGCForeground(gc, GR_COLOR_RED);   // 前景色(字体颜色)
53     GrSetGCBackground(gc, GR_COLOR_GREEN); // 背景色(字体背景颜色)
54     GrText(wid, gc, 10, 20, "你好 in wid", -1, GR_TFBOTTOM);
55
56     for (;;)
57     {
58         GrGetNextEvent(&event);
59     }
60     GrClose();
61
62     return 1;
63 }
64

这里要注意了:
前 面我说过Microwindows支持的中文字符集是GB2312,所以并不是你在程序中输入的中文它都可以显示,这时你要保证你你的hello.c文件 的编码是GB2312,或者是GB18030,或者是GBK的,但是现在大多数比较新的Linux发行版都用的是Unicode了,所以这就比较麻烦了, 好在现在很多编辑器都支持GB18030编码的支持,你可以在这些编辑器中再编辑hello.c文件。gedit、kwrite、kate都还支持 GB18030编码。这时你就要用这工具设置成GB18030编码,然或再编辑我上面的那个hello.c文件,祝你成功。

5.

源文件编写好后,Makfile不用做任何修改,直接运行make编译就好了,如果没有意外的话,在projects文件夹中应该会 重新生成一个“hello”可执行文件,执行它,就可以看到下面这个界面了,是不是看到了中文^_^:

7.

用Microwindows(Nano-X)编写中文程序相关推荐

  1. java 保存后中文乱码_sublime编写java程序保存编译,运行之后中文显示乱码

    sublime是常见的java编辑工具之一,在初学者使用时可以更好的熟悉每条命令,以及逻辑关系.但在编写的java程序里包含中文字符的时候,在通过cmd命令提示符编译并运行之后会出现乱码,如下图: 很 ...

  2. 自学java编译老是出错_编写HelloWorld程序编译时提示写入HelloWorld时出错是什么意思...

    编写HelloWorld程序编译时提示写入HelloWorld时出错是什么意思 这个能出错的地方就难说了,能给出代码或者错误提示吗 为什么javac编译后说写入错误呢HelloWorld.java : ...

  3. 编写一个程序,分别使用字节流和字符流拷贝一个文本文件

    1.编写一个程序,分别使用字节流和字符流拷贝一个文本文件. 提示: 1)使用FileInputStream.FileOutputStream和FileReader.FileWriter分别进行拷贝 2 ...

  4. 编写python程序输出数学表达式_Python基本编程题

    问题1:仅使用 Python 基本语法,即不使用任何模块,编写 Python 程序计算下列数学表达式的结果并输出,小数点后保留3位.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬ ...

  5. XFC演示-使用C语言通过WinAPI函数编写Windows程序

    XFC演示-使用C语言通过WinAPI函数编写Windows程序 1,目标效果: 2,代码片段: winMain.c /*!\file winMain.c\version v1.00\date 10/ ...

  6. 编写Python程序

    编写Python程序 1.Python 环境搭建 2.第一个Python程序 1.交互式解释器模式: 2.命令行脚本模式: 3.集成开发环境(IDE):PyCharm 3.Pyhton中文编码 拓展 ...

  7. python可以用来编写计算机网络程序吗_python学习——网络程序设计

    一.前言 Socket是计算机之间进行网络通信的一套程序接口,最初由Berkeley大学研发,目前已经成为网络编程的标准,可以实现跨平台的数据传输.Socket是网络通信的基础,相当于在发送端和接收端 ...

  8. c语言万年历代码作业,用c语言编写万年历程序

    用c语言编写万年历程序 <C 程序设计>课程设计报告 2011-2012学年第二学期 设计题目:万年历的设计 指导教师: 李素若 完成时间:2012 年 6月 1日至 2011年 6月 2 ...

  9. 银联银行卡卡号java_编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类...

    编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62" ...

最新文章

  1. 精讲 MySQL 事务日志:redo log 和 undo log
  2. Redis数据“丢失”问题
  3. 错误信息:Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务
  4. .net5+nacos+ocelot 配置中心和服务发现实现
  5. 【转】1.9 Asp.Net Core 轻松学-多线程之取消令牌(
  6. 如何使用JavaScript访问对象的键中有空格的对象?
  7. 深度学习2.0-6.tensorflow的高阶操作之合并与分割
  8. 13. GameProjec1_GameEngine
  9. k2p路由器搭建php,K2P新手教程之openwrt cc 基础设置
  10. imperva 获取gti文档
  11. .Net下的分库分表帮助类——用分库的思想来分表 - 秋夜 - 博客园
  12. 使用 QTLtools 进行 PCA 分析
  13. R语言求解 常微分方程 绘制洛伦兹系统
  14. 如何让一个停不下来的shell脚本在规定时间内停下来?
  15. 360 PK QQ 始末
  16. 【UEFI基础】UEFI事件介绍
  17. URL网址的正则检验(验证字符串是否符合URL网址的格式)
  18. 网络安全知识:APT攻击是什么意思?APT攻击防御措施
  19. SQL:基本的数据操作语句
  20. Android 调用铃声与振动

热门文章

  1. CIKERS Shane 20190530
  2. 2018届应届生android面试总结
  3. centos下hadoop的安装
  4. windows编程点滴(四)之线程的同步
  5. 备份关键信息linux
  6. 请求页式存储管理中页面置换算法的模拟设计_操作系统-存储管理与文件管理-笔记...
  7. 声学多普勒流速剖面仪_雷达流量计/流速仪厂家有哪些?
  8. c php数据,C 数据类型
  9. c语言dynamic变量,C# dynamic关键字的使用方法
  10. ws5102怎么设置虚拟服务器,【华为路由器WS5102怎么设置开双频】规格参数|限速|APP|配置|功耗_摘要频道_什么值得买...