Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Обработка сообщений на Linux


Автор: Gwendolen 13.8.2008, 20:03
В Windows для обработки сообщений потока/окна используется цикл обработки сообщений и функции Win API:
GetMessage, PostThreadMessage или Post/SendMessage.

Что может применяться для этих целей в Linux?

Поисковики нашли мне: XNextEvent, XSendEvent. Но это для работы в X Window. 

Мне необходимо обработать сообщения, которые я сам буду посылать не основному потоку (нити), есть ли для этого более низкоуровневые API функции. Желательно пример реализации.

P.S. Для создания исполняемого файла планируется использовать QT, но обработку сообщений требуется сделать независимой от каких либо нестандартных библиотек.

P.P.S. Эта тема является частным продолжением более общей темы http://forum.vingrad.ru/index.php?showtopic=224199&view=findpost&p=1609347.

Автор: bilbobagginz 13.8.2008, 21:02
Цитата(Gwendolen @  13.8.2008,  20:03 Найти цитируемый пост)
P.S. Для создания исполняемого файла планируется использовать QT, но обработку сообщений требуется сделать независимой от каких либо нестандартных библиотек.

можете пояснить это P.S. ?  в линуксе нет LinAPI32 smile

всё зависит от среды работы, которую выберешь.

обычно приложения, которые нужно запускать на разных оперативных системах разрабатывают изначально в кроссплатформенной среде.
Написать программу на WinAPI,  а потом "попробовать переписать" ее с кроссплатформенной системой сообщений ... это как бы скрытый абсурд:
человек выбирает библиотеку. 

Есть самый низкий уровень работы -  XWindows. т.е. libX.so

но им никто не пользуется, потому что ... не эффективно всё писать на ней. 
надо дублировать работу, которую уже сделали: GTK, FLTK, QT и наверное несколько других.
самые распространенные из них - GTK и QT.

но если тебе надо писать кроссплатформенный софт, то уже работают с нашлепкой на GTK, по имени wxWidgets.
она работает и с Виндой, и с МАком и с Линухой.

или QT, которая тоже может тебе помочь.

А выбрать QT или wx это тоже вопрос еще тот.

тут просто подход нужен. QT насколько я понимаю придаёт приложению "Kью-Тишный" вид. а wxWidgets наоборот придаёт  приложению "родной" вид к оперативной системе, на которой бежит.

QT реализует систему работы с сообщениями немного по-своему, поэтому с т.з. времени адаптации, программисту windows легче будет освоить подход wxWidgets - т.к. их подход - очень похож на подход MFC



Думаю для п
Цитата(Gwendolen @  13.8.2008,  20:03 Найти цитируемый пост)
Что может применяться для этих целей в Linux?


решай сам...

Автор: Lazin 13.8.2008, 21:24
Цитата(Gwendolen @  13.8.2008,  20:03 Найти цитируемый пост)
но обработку сообщений требуется сделать независимой от каких либо нестандартных библиотек

ни в одной стандартной библиотеке нет средств для работы с сообщениями, есть boost::interprocess, там были какие-то очереди сообщений, сам еще не смотрел...

Автор: andrew_121 14.8.2008, 01:18
Gwendolen, Вот не понимаю smile Юзаешь Qt, и ищешь механизм обработки сообщений. Странно. А в Qt превосходнейший механизм!
Потокобезопасный! По моему один из лучших.

Автор: Gwendolen 14.8.2008, 19:48
Цитата(andrew_121 @  14.8.2008,  01:18 Найти цитируемый пост)
превосходнейший механизм

Согласен, превосходный. Но механизм зависит от библиотеки QT.

Автор: andrew_121 15.8.2008, 01:32
Цитата(Gwendolen @  14.8.2008,  19:48 Найти цитируемый пост)
Согласен, превосходный. Но механизм зависит от библиотеки QT.

Так ты ее и используешь! Странно избегать зависимости от Qt, используя Qt.  smile 

Автор: bsa 17.8.2008, 21:02
Цитата(andrew_121 @ 15.8.2008,  01:32)
Цитата(Gwendolen @  14.8.2008,  19:48 Найти цитируемый пост)
Согласен, превосходный. Но механизм зависит от библиотеки QT.

Так ты ее и используешь! Странно избегать зависимости от Qt, используя Qt.  smile

Он хочет писать плагины на Delphi.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)