#c #x11
#c #x11
Вопрос:
Я пытаюсь открыть окно X11, распечатать один пиксель, а затем добавить код, чтобы функция Terminate() возвращала значение true. Но это не сделает окно. Вот мой код:
#include lt;X11/Xlib.hgt; #include lt;X11/Xutil.hgt; #include lt;X11/Xos.hgt; #include lt;iostreamgt; int x = 0; int y = 0; bool Termination() { return true; } int main() { Display *dspl = XOpenDisplay(NULL); if (!dspl) return 1; int screenNumber = DefaultScreen(dspl); unsigned long white = WhitePixel(dspl, screenNumber); unsigned long black = BlackPixel(dspl, screenNumber); Window win = XCreateSimpleWindow(dspl, DefaultRootWindow(dspl), 50, 50, 1280, 720, 0, black, white); XSetStandardProperties(dspl, win, "Lel", "Gaem", None, NULL, 0, NULL); GC gc = XCreateGC(dspl, win, 0,0); XSetBackground(dspl, gc, black); XSetForeground(dspl, gc, white); XClearWindow(dspl, win); XMapRaised(dspl, win); XDrawPoint(dspl, win, gc, x, y); while (Termination()) { } XFreeGC(dspl, gc); XDestroyWindow(dspl, win); XCloseDisplay(dspl); printf("Job's done!n"); return 0; }
Что мешает X11 отобразить мое окно?
Комментарии:
1. X11 давно я не делал ничего подобного. 🙂
2. Вы забыли очистить вывод? XFlush? И почему вы используете xlib, а не xcb?
Ответ №1:
добавьте это до того, как
XMapWindow(dspl, win); XInternAtom(dspl, "WM_DELETE_WINDOW", False);