LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 772|回复: 1

为什么这个程序代码编译后显示不了GUI窗口?!

[复制链接]
发表于 2005-8-2 12:43:15 | 显示全部楼层 |阅读模式
我编写了一个简单的显示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;
}

编译通过了,可是什么反映都没有,请大家帮我看看问题处在哪里?谢谢!
 楼主| 发表于 2005-8-2 13:12:11 | 显示全部楼层
问题解决了,我真差劲,原来还应该加入窗口曝光事件的代码!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表