gpt4 book ai didi

C++ 和 Xlib - 中心窗口

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:39 25 4
gpt4 key购买 nike

我已经开始研究直接基于 XLib 的 GUI 应用程序编程,我正在尝试在屏幕上创建一个居中的窗口。我不知道用于实现此目的的常用技术。我的代码(不起作用)是这样的(我使用 CodeBlocks)

#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <X11/Xatom.h>
#include <X11/keysym.h>
#include <GL/glew.h>
#include <GL/freeglut.h>

int screen;
Display *display;
XSetWindowAttributes window_attributes;
Window mainwindow;
XEvent events;

int main(int argc, char** argv) {
display = XOpenDisplay(NULL);screen = DefaultScreen(display);
window_attributes.background_pixel = XWhitePixel(display, screen);
window_attributes.border_pixel = XBlackPixel(display, screen);
window_attributes.win_gravity = SouthWestGravity;

mainwindow = XCreateWindow(display,
RootWindow(display, screen),
1, 1,
600, 400,
0,
CopyFromParent,
InputOutput,
CopyFromParent,
CWBackPixel|CWBorderPixel,
&window_attributes
);
XMapWindow(display, mainwindow);
XFlush(display);
XSelectInput(display, mainwindow, ExposureMask|KeyPressMask|ButtonPressMask);
while (1) {
XNextEvent(display, &events);
switch (events.type) {
case Expose:
// Lots of code that doesn't matter for my problem
break;
}
}
return 0;
}

所以,我认为 window_attributes.win_gravity 可以解决问题,但似乎我做错了什么或者它一定是操作系统相关的问题。
感谢您的帮助!

更新
我已经将 X(左侧位置)改变了 100,将 y(顶部位置)改变了 100,但窗口的位置没有改变。所以,我的问题是窗口的位置无法更改,无论它是什么。

最佳答案

  1. 重力适用于窗口自身的内容和子窗口,而不是它在父窗口中的位置。
  2. 窗口管理器可以并且确实会覆盖顶级窗口位置请求。在 XMapWindow 调用之后使用 XMoveWindow

关于C++ 和 Xlib - 中心窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com