当前位置: 技术问答>linux和unix
一个关于X-windows的问题
来源: 互联网 发布时间:2015-09-09
本文导语: 源程序如下: /* --- Xtest.c --- */ #include #include #include #include main() { Display *display; Window window; XSetWindowAttributes attr; XSizeHints *sz; /* 建立一个 display 的 connection */ display = XOpenDisplay("0:0"); /* 建立和设定 windo...
源程序如下:
/* --- Xtest.c --- */
#include
#include
#include
#include
main() {
Display *display;
Window window;
XSetWindowAttributes attr;
XSizeHints *sz;
/* 建立一个 display 的 connection */
display = XOpenDisplay("0:0");
/* 建立和设定 window 的属性 */
window = XCreateWindow(display, XDefaultRootWindow(display),
100, 100, 300, 300, 2, XDefaultDepth(display, 0),
InputOutput, CopyFromParent, 0, &attr);
/* 和 Window Manager 进行沟通 */
XStoreName(display, window, "hello!! world!!");
sz = XAllocSizeHints();
sz->x = 100;
sz->y = 100;
sz->width = 300;
sz->height = 300;
sz->flags = USPosition | USSize;
XSetNormalHints(display, window, sz);
/* Mapping Window 正式影射到显示器画面*/
printf("Map windown");
XMapWindow(display, window);
getchar(); /* 至此,视窗已执行 Map 的动作了,但
显示器上,却可能看不到。*/
printf("XFlushn");
XFlush(display);
getchar(); /* 这,你应该就看到显示器上的变化了 */
/*
.................
.... 程式处理部分 ..
....................
*/
/* 关闭视窗 */
printf("Destory Windown");
XDestroyWindow(display, window);
getchar();
printf("XFlushn");
XFlush(display);
getchar();
/* 关闭 display */
printf("close displayn");
XCloseDisplay(display);
getchar();
}
使用以下命令编译:
gcc -o Xtest Xtest.c -L/usr/X11R6/lib -lX11
编译成功,在linux(ctrl+alt+F1)第一的平台运行时就是print出来了,看不到任何窗口啊!究竟是怎么回事啊?
这是这个程序的解释网站.http://fanqiang.chinaunix.net/a4/b8/20010601/190001312.html
Xwindows让我痛苦了3天了,编译什么都成功了,结果确是空的,唉~~~~~~
/* --- Xtest.c --- */
#include
#include
#include
#include
main() {
Display *display;
Window window;
XSetWindowAttributes attr;
XSizeHints *sz;
/* 建立一个 display 的 connection */
display = XOpenDisplay("0:0");
/* 建立和设定 window 的属性 */
window = XCreateWindow(display, XDefaultRootWindow(display),
100, 100, 300, 300, 2, XDefaultDepth(display, 0),
InputOutput, CopyFromParent, 0, &attr);
/* 和 Window Manager 进行沟通 */
XStoreName(display, window, "hello!! world!!");
sz = XAllocSizeHints();
sz->x = 100;
sz->y = 100;
sz->width = 300;
sz->height = 300;
sz->flags = USPosition | USSize;
XSetNormalHints(display, window, sz);
/* Mapping Window 正式影射到显示器画面*/
printf("Map windown");
XMapWindow(display, window);
getchar(); /* 至此,视窗已执行 Map 的动作了,但
显示器上,却可能看不到。*/
printf("XFlushn");
XFlush(display);
getchar(); /* 这,你应该就看到显示器上的变化了 */
/*
.................
.... 程式处理部分 ..
....................
*/
/* 关闭视窗 */
printf("Destory Windown");
XDestroyWindow(display, window);
getchar();
printf("XFlushn");
XFlush(display);
getchar();
/* 关闭 display */
printf("close displayn");
XCloseDisplay(display);
getchar();
}
使用以下命令编译:
gcc -o Xtest Xtest.c -L/usr/X11R6/lib -lX11
编译成功,在linux(ctrl+alt+F1)第一的平台运行时就是print出来了,看不到任何窗口啊!究竟是怎么回事啊?
这是这个程序的解释网站.http://fanqiang.chinaunix.net/a4/b8/20010601/190001312.html
Xwindows让我痛苦了3天了,编译什么都成功了,结果确是空的,唉~~~~~~
|
1.将XOpenDisplay("0:0");中的0:0改为 :0.0 。如:
XOpenDisplay("192.168.0.11:0.0");
2.你首先要启动x-windows,在x-windows的某一个终端窗口运行你的程序。
现在怎么讲也应该看到了(每打印一行字就按一个键,在打印Map window之后就出来了)。刚开始窗口可能被你的终端窗口盖着,但你可以在任务栏把它切到前面。
我已经帮你试过,没问题。0:0的显示名格式很可能是错的(正确的应该是0.0),用完整的显示名肯定不会有问题 :0.0
XOpenDisplay("192.168.0.11:0.0");
2.你首先要启动x-windows,在x-windows的某一个终端窗口运行你的程序。
现在怎么讲也应该看到了(每打印一行字就按一个键,在打印Map window之后就出来了)。刚开始窗口可能被你的终端窗口盖着,但你可以在任务栏把它切到前面。
我已经帮你试过,没问题。0:0的显示名格式很可能是错的(正确的应该是0.0),用完整的显示名肯定不会有问题 :0.0
|
程序没问题,你要按个回车图形才出来。
你程序里有几个getchar()。
你程序里有几个getchar()。