LINUX.ORG.RU

Помогите с Xwindow (окно не показывается)


0

0

Пытаюсь научиться писать под Xwindow в данный момент есть система для обработки видео и к ней плугины. В одном из плугинов хочу открыть окно и рисовать в нем графики. Для этого использую готовый widget (SciPlot). Идея была такая: в функции инициализации создаю окна и потом на каждый фрейм делаю апдейт. В функции инициализации плугина создаю wigdets,затем вызываю XtRealizeWidget(toplevel) но окно не появляется. Как мне заставить его появиться? Программа вроде правильная, если ее написать как отдельную программу то все работает, но там я в конце ставил XtMainLoop();. Как показать окно без XtMainLoop()?. Спасибо.

П.С. Что можно почитать по поводу программирования под Xwindow ?


XFlush вызови (вместо XtMainLoop). Xlib буферизирует некоторые запросы. Пока буфер не сбросишь, вновь созданные окна могут не появиться.

Насчет "почитать по поводу": доки идут вместе с иксами. Куда создатель твоего дистра их сунул - хз. Поищи в следующих местах: /usr/X11R6/doc/html/X11/index.html, /usr/X11R6/doc/hardcopy/X11.PS.gz.

nobody ★★
()
Ответ на: комментарий от nobody

Спасибо, завтра гляну. Доков по Xwindow не нашел, есть только маны, но их можно читать, когда надо уточнить то, что уже знаешь. У меня Дебиан доков по Xwindow не вижу :(

buddha
() автор топика
Ответ на: комментарий от buddha

А как вы, простите, собираетесь вообще без обработки событий иксовых работать??? Наверное что-то не понял... Извините, коли что.

tarle
()
Ответ на: комментарий от buddha

Попробуй вставить такой код:

while (1) XNextEvent(display, &event);

Программа повесится, но это не важно. Главное -- окно должно появиться, если ты все остальное правильно сделал.

Насчет доки. С дебианом не работал, не могу подсказать. Варианты:

1) Натрави find на поиск файла "X11.*" начиная от "/".
2) Спроси на форуме дебиана (есть ведь у него форумы?).
3) Пойди на ftp.x.org, стяни оттуда исходники доки в sgml, конвертни их в html.
4) Сходи на google.com и поищи "Xlib - C Language X Interface".

nobody ★★
()
Ответ на: комментарий от nobody

Да, так действительно работает.

buddha
() автор топика
Ответ на: комментарий от nobody

Разобрался, нужно было просто подожать MapNotify event.

while(event.type != MapNotify) XNextEvent(XtDisplay(toplevel), &event);

buddha
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.