用Microwindows(Nano-X)编写“hello world”

用Microwindows(Nano-X)编写“hello world”

By: 吴垠
Date:2008-05-09
Homepage:http://blog.csdn.net/wooin
Email:lazy.fox.wu#gmail.com
Copyright:该文章版权由吴垠和他可爱的老婆小包子所有。可在非商业目的下任意传播和复制。对于商业目的下对本文的任何行为需经作者 同意。
Link: http://blog.csdn.net/wooin/archive/2008/05/14/2446721.aspx

1.Microwindows, 又叫Nano-X,是一个轻巧的GUI系统,由于其是开源免费的,并且支持中文,所以常被用在需要显示图形界面的嵌入式设备中。对 Microwindows的介绍我就不说了,Google上可以搜到很多。本文主要是介绍如何从网上下载一个Microwindows,并且编译,然后用 Microwindos写出一个自己的"hello world"程序。注意:这里介绍的只是在PC上运行的Microwindows,不是交叉编译嵌入式环境的。

这里(www.microwindows.org) 是Microwindows的官方网站,已经有很多年没有更新了,但是Microwindows的应用并没有因此而减弱。
2.下面开始今天的工作(我的Linux发 行版是Fedora 5),首先从网站上下载一个Microwindows的源码包,我们用0.90版的,下载后应该是这样的一个文件:microwindows- 0.90.tar.gz
用下面的命令解压,并进入其源码目录:
$ tar -xzvf microwindows-0.90.tar.gz
$ cd microwindows-0.90/src
3.修改几个文件:
文件 Arch.rules
21行:
COMPILER = gcc
改为
COMPILER = gcc32

因为Fedora 5默认的gcc是4.1.0版,语法检查太严格,Microwindows编译会出错。如果你的发行版上默认的gcc也是4.x版的,请换成3.x版的, 将上面的“gcc32”换成你Linux上gcc 3.x版本的名字,没有的话可能就要自己安装了。
用gcc 4.x也不是不能编译,只是由于Microwindows的代码太老了,跟新编译器不兼容,编译会出一些错误,你按照错误提示修改一下源代码也可以编译通 过,有点麻烦,这里我就不详细介绍了。
110行:
LINK_APP_INTO_SERVER     = N
改为
LINK_APP_INTO_SERVER     = Y

修改文件 config
136行:
HAVE_JPEG_SUPPORT        = Y
改为
HAVE_JPEG_SUPPORT        = N
因为我的电脑上没有 /usr/lib/libjpeg.a 这个文件,编译会出错,如果你有这个文件,
你可以试试不修改上面这行,看看能不能编译通过。
这个可以让Microwindows支持jpeg文件
259行:
X11                      = N
改为
X11                      = Y
修改这个配置让Microwindows使用X11的鼠标和键盘的驱动程序
4.编译Microwindows:
在microwindows-0.90/src目录下运行make命令进行编译:
$ make
如果没有意外的话会编译成功。如果还有错误的话可能就是你的Linux环境缺文件,可以根据编译报错的提示信息修改config文件试试。

运行一下bin目录下的Demo程序看看你是否编译成功了。mine程序是Microwindows自带的一个扫雷游戏,跟windows下的一样。运行 一下试试:
$ cd bin
$ ./mine
如果你可以看到下图中的游戏界面,就说明你编译成了,恭喜!!

5.编写自己的"Hello World"程序,在src目录下建一个“projects”文件夹
$ mkdir projects
$ cd projects
然后在里面编写我们的程序,下面列出了“hello.c”源程序和“Makefile”
6.
 1 /***************************************************************************
2 * Filename : hello.c
3 * Begin : 2008-05-09 16:24:44
4 * Project : Hello Nano-X World
5 * Version : 1.0
6 * Copyright : GPL v2.0
7 * Author : Wu Yin
8 * Description :
9 ***************************************************************************/
10 #include <stdio.h>
11 #include "nano-X.h"
12 #include "nxcolors.h"
13
14 int main()
15 {
16 GR_WINDOW_ID root_wid, wid;
17 GR_GC_ID gc;
18 GR_COORD x, y;
19 GR_SIZE width, height;
20 GR_EVENT event;
21
22 x = 0;
23 y = 0;
24 width = 640;
25 height = 480;
26
27 if (GrOpen() < 0)
28 {
29 printf("Can't open graphics/n");
30 return 0;
31 }
32
33 gc = GrNewGC();
34 // 创建父窗口(根窗口)
35 root_wid = GrNewWindow(GR_ROOT_WINDOW_ID, x, y, width, height,
36 1, GR_COLOR_ROYALBLUE, GR_COLOR_BLACK);
37 // 创建一个子窗口
38 wid = GrNewWindow(root_wid, 60, 60, 200, 60, 1, GR_COLOR_BLACK, GR_COLOR_WHITE);
39 GrMapWindow(root_wid); // 绘制父窗口
40 GrMapWindow(wid); // 绘制子窗口
41
42 // 显示在父窗口中的文字
43 GrSetGCForeground(gc, GR_COLOR_RED); // 前景色(字体颜色)
44 GrSetGCBackground(gc, GR_COLOR_GREEN); // 背景色(字体背景颜色)
45 GrText(root_wid, gc, 10, 20, "Hello in root_wid", -1, GR_TFBOTTOM);
46
47 // 显示在子窗口中的文字
48 GrSetGCForeground(gc, GR_COLOR_RED); // 前景色(字体颜色)
49 GrSetGCBackground(gc, GR_COLOR_GREEN); // 背景色(字体背景颜色)
50 GrText(wid, gc, 10, 20, "Hello in wid", -1, GR_TFBOTTOM);
51
52 for (;;)
53 {
54 GrGetNextEvent(&event);
55 }
56 GrClose();
57
58 return 1;
59 }
60
7.
 1 ##############################################################################
2 # Makefile
3 ##############################################################################
4 ifndef TOP
5 TOP = ..
6 CONFIG = $(TOP)/config
7 endif
8
9 include $(CONFIG)
10
11 ############################# targets section ################################
12 # If you want to create a library with the objects files, define the name here
13 OBJS = hello.o
14 TARGETS = hello
15
16 all: default $(TARGETS)
17
18 ######################### Makefile.rules section #############################
19 include $(TOP)/Makefile.rules
20
21 ifeq ($(SHAREDLIBS), Y)
22 LD_NANOXCLIENTLIBS = $(CCNANOXCLIENTLIBS)
23 else
24 LD_NANOXCLIENTLIBS = $(NANOXCLIENTLIBS)
25 endif
26
27 ######################## Tools targets section ###############################
28 $(TARGETS): $(OBJS) $(NANOXCLIENTLIBS) $(TOP)/config
29 $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@ $(LD_NANOXCLIENTLIBS)
30 clr:
31 rm -f *.o *~ .depend $(TARGETS)
8.将上面两个源文件创建在你的projects文件夹中,然后运行make命令编译它,如果没有意外的话,在projects文件夹中应该生成一个“hello”可执行文件,执行它,就可以看到下面这个界面了:

9.剩下的工作就是写你自己的程序了 ^_^
  

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值