- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Nano-X 程序设计
Tel:010 Fax: 010
Nano-X 程序设计
创建一个简单的Nano-X 应用程序
目的:绘制一个带兰边的白色方块。
源代码
filename :sample.c
#define MWINCLUDECOLORS
#include
#include “nano-X.h”
int main(int ac,char **av)
{
GR_WINDOW_ID w;
GR_EVENT event;
if (GrOpen() 0) {
printf(“Can’t open graphics\n”);
exit(1);
}
w = GrNewWindow(GR_ROOT_WINDOW_ID, 20, 20, 100, 60, 4, WHITE, BLUE);
GrMapWindow(w);
for (;;) { GrGetNextEvent(event); }
GrClose();
return 0;
}
编译运行
在配置和检测了Microwindows 初始安装程序以后,用“make install ”指令来创建Nano-X 服务
器、客户库和头文件,然后键入下述字符编译、链接和运行示例程序:
#1460, New Century Hotel Office Building. No.6 Southern Road Capital Gym. Beijing 100044
北京首都体育馆南路六号新世纪饭店写字楼1460 室 邮编:100044
Tel:010Fax: 010
gcc sample.c –o sample –lnano-X
nano-X sleep 1; sample
键入escape 将退出服务器。
GrOpen()函数用于打开一个与正在运行中的Nano-X 服务器的连接,如果服务器没有运行,
则返回-1 值,应用程序此时显示错误信息并退出。
GrNewWindow 函数在屏幕(20 ,20 )的位置上创建一个100x60 像素的窗口。它的边界大
小为4 像素宽,兰边白底。
然后调用 GrMapWindow 函数将刚刚创建的窗口在屏幕上显示出来。这是因为有时生成一
组窗口很方便,但是要根据用户指令在屏幕上显示和移动。
在屏幕显示窗口以后,程序进入“event loop ”状态,等待下一个鼠标或键盘事件。
Expose event
更为复杂的Nano-X 应用程序基本上遵从上述同样的逻辑结构。
首先生成窗口,接着显示出来,然后程序进入“event loop ”等待用户发出指令。
在该例中并没有真正写出明确的代码在窗口上画出东西。在实现这一点之前,首先应当理
解关于Expose event 的概念。
Nano-X API 提供一套完整的在屏幕上划线、写字、画圆和显示图像的函数。当一个窗口被
遮住时,Microwindows 剪辑该窗口图画并保存下来,当被遮掩部分再次需显示时,可以重新刷
新以显示以前的内容。刷新发生时,服务器首先向应用程序发送一个Expose event ,要求重新绘
制窗口中的内容。Microwindows 在首次显示窗口后就发出一个expose event 指令,这样重新绘
制时使用的代码和原来显示时所用的代码完全一样,所以可以实现在原先位置上显示同样的内
容。
下例是用该机制显示一些文字,并在窗口移动后重新显示出来(sample2.c).
#define MWINCLUDECOLORS
#include
#include “nano-X.h”
int main(int ac,char **av)
#1460, New Century Hotel Office Building. No.6 Southern Road Capital Gym. Beijing 100044
北京首都体育馆南路六号新世纪饭店写字楼1460 室 邮编:100044
Tel:010 Fax: 010
{
GR_WINDOW_ID w
文档评论(0)