|
|
我编写了一个简单的显示GUI窗口代码如下:
DrawBaseImage.h
#ifndef DRAWBASEIMAGE_H
#define DRAWBASEIMAGE_H
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <X11/Xatom.h>
#include<iostream>
using namespace std;
class DrawBaseImage{
private:
static char *str;
Display *display;
int screen_num;
Window win; //窗口ID
unsigned int width, height; //窗口尺寸
unsigned int border_width; //边界空白
unsigned int display_width, display_height; //屏幕尺寸
int count;
XEvent report;
GC gc; //定义图元
unsigned long valuemask;
XGCValues values;
char *display_name;
public:
int Draw();
DrawBaseImage();
virtual ~DrawBaseImage();
};
#endif // DRAWBASEIMAGE_H
DrawBaseImage.cxx文件:
#include "DrawBaseImage.h"
DrawBaseImage: rawBaseImage()
{
}
int DrawBaseImage: raw()
{
display_name = NULL;
border_width = 4;
valuemask = 0;
//与X服务器连接
if((display = XOpenDisplay(display_name)) == NULL)
{
cout << "Cannot connect to X server " << XDisplayName(display_name) << endl;
exit (-1);
}
screen_num = DefaultScreen (display); //获得缺省的screen_num
//获得屏幕的宽度和高度
display_width = DisplayWidth (display, screen_num);
display_height = DisplayHeight (display, screen_num);
//指定所建立窗口的宽度和高度
width = display_width / 3;
height = display_height / 4;
//建立窗口
win = XCreateSimpleWindow (display, //display
RootWindow (display, screen_num), //父窗口ID
0, 0, width, height, //位置和大小
border_width, //边界宽度
BlackPixel (display, screen_num), //边界色
WhitePixel (display, screen_num)); //背景色
//选择感兴趣的事件掩码
XSelectInput (display, win,
ExposureMask //曝光事件
| KeyPressMask //按键事件
| ButtonPressMask //鼠标按键事件
| StructureNotifyMask); //窗口改变事件
//建立GC
gc = XCreateGC (display, //Display
win, //窗口ID
valuemask, //GC的掩码
&values); //获得GCvalue的值
//显示窗口
XMapWindow (display, win);
return 0;
}
DrawBaseImage::~DrawBaseImage()
{
}
int main (int argc, char **argv)
{
int i;
DrawBaseImage *drawBaseImage = new DrawBaseImage;
i = drawBaseImage->Draw();
cout << i << endl;
//cout << "OK!" << endl;
return 0;
}
编译通过了,可是什么反映都没有,请大家帮我看看问题处在哪里?谢谢! |
|