QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1789|回复: 6

sdl+gtk: BadWindow error

[复制链接]
发表于 2006-6-14 14:41:49 | 显示全部楼层 |阅读模式
在gtk中显示SDL的应用:

编译通过,但是运行出错,如:
The program 'gtk-demo_bak' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadWindow (invalid Window parameter)'.
  (Details: serial 55 error_code 3 request_code 3 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
那位大牛能给我指点迷津,谢谢
 楼主| 发表于 2006-6-14 15:17:03 | 显示全部楼层
          
回复

使用道具 举报

发表于 2006-6-14 16:02:22 | 显示全部楼层
代码?
回复

使用道具 举报

 楼主| 发表于 2006-6-14 16:14:56 | 显示全部楼层
#define WINSIZEX 320
#define WINSIZEY 200



int main(int argc, char *argv[])
{
        gtk_init(&argc, &argv);

          Display *dpy;
          GtkWidget* button;
          GtkWidget* fixed;
          GtkWidget* topdows;


         topdows = gtk_window_new(GTK_WINDOW_TOPLEVEL);
         ............../*初始化窗口*/

          fixed = gtk_fixed_new();
          mainwin = gtk_drawing_area_new();
          gtk_widget_set_size_request (mainwin, 200, 200);
          gtk_fixed_put(GTK_FIXED(fixed),mainwin,0,0);
          
          button = gtk_button_new_with_label("Savem");
          gtk_fixed_put(GTK_FIXED(fixed),button,210,0);
          
          gtk_container_add (GTK_CONTAINER (topdows),fixed);
          gtk_widget_show_all(topdows);
          
          printf("win_id = %ld\n",GDK_WINDOW_XWINDOW(mainwin->window));


       
        {
                char SDL_windowhack[32];
                sprintf(SDL_windowhack,"SDL_WINDOWID=%ld",
                        GDK_WINDOW_XWINDOW(mainwin->window));
                putenv(SDL_windowhack);
                printf("SDL_windowhack[32] = { %s }\n",SDL_windowhack);
        }

if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
  fprintf(stderr,"Couldn't initialize SDL: %s\n",SDL_GetError());
  gtk_main_quit();
}

printf("1****************\n");
screen = SDL_SetVideoMode(200, 200, 0, 0);/*到这里就行不通了噢*/
printf("2****************\n");
        CheckShape();/*初始化xlib*/
        ShowWindow();
        SDL_UpdateRect(screen, 0,0,0,0);

        gtk_main();
        SDL_Quit();
        return 0;
}
回复

使用道具 举报

发表于 2006-6-14 16:17:05 | 显示全部楼层
排版
回复

使用道具 举报

 楼主| 发表于 2006-6-14 16:24:24 | 显示全部楼层
写的时候是有格式的,发出去后就没了
请看看先,谢谢
回复

使用道具 举报

发表于 2006-6-14 19:12:15 | 显示全部楼层
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=143469
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-2 14:23 , Processed in 0.036085 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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