Xlib:窗口创建的位置错误

时间:2012-10-10 13:14:13

标签: c xlib

我有简单的xlib程序,可以创建窗口。我认为它必须在屏幕的左上角显示窗口,因为我将0,0传递给XCreateSimpleWindow函数,但它位于中上方。为什么?

#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>     

int
main(int argc, char* argv[])
{
  Display* display;     
  int screen_num;       
  Window win;           
  unsigned int display_width,display_height;    
  unsigned int width, height;   
  char *display_name = getenv("DISPLAY");

  display = XOpenDisplay(display_name);
  screen_num = DefaultScreen(display);
  display_width = DisplayWidth(display, screen_num);
  display_height = DisplayHeight(display, screen_num);

  width = (display_width / 3);
  height = (display_height / 3);

  win = XCreateSimpleWindow(display, RootWindow(display, screen_num), 0, 0, width, height, 1, BlackPixel(display, screen_num), WhitePixel(display, screen_num));

  XMapWindow(display, win);

  XSync(display, False);

  while(1) { }    
}

1 个答案:

答案 0 :(得分:3)

顶层窗口由窗口管理器放置(并确定尺寸),窗口管理器可以执行任何适合它的操作。通常尺寸是受到尊重但是位置不是(为了留下装饰的地方,为了尊重放置工具栏的放置政策,......)

如果您希望尊重您的请求,请尝试没有窗口管理器的显示器(使用VNC或类似设备来获取此类显示器,不要尝试像这样使用您的桌面)