crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Связка Qt+WinApi, Послать сигнал из WinApi в Qt объект
512es
  опции профиля:
сообщение 30.12.2013, 10:17
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


Доброе время суток и с наступающим всех!

Имеется приложение на WinApi, с минимальными зависимостями.
Оно подгружает dll-ку на Qt (в отдельном потоке). Получает указатель на Qt-шный класс c вызывает метод, в котором уже отрабатывает QApplication::exec().
В WinApi потоке работает цикл сообщений GetMessage() + TranslateAccelerator() + TranslateMessage() + DispatchMessage().
Всё работает отлично. Но теперь нужно наладить связь между этими двумя потоками.

Т.е. из WinApi надо как то посылать сигналы в цикл обработки сообщений Qt потока. Типа вот так:
QMetaObject::invokeMethod(object, "mySlot", Qt::QueuedConnection);

В идеале конечно связь должна быть двусторонняя.

Пока на ум приходит только использовать PostMessage().

Есть идеи?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.2.2014, 7:25
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


512es, DLL загружают не в потоки, а в процесс. Получать указатель на класс из DLL я бы лично побоялся - обязательно как-нибудь всё это грохнется, всего не предусмотришь. Связь можно организовать через TCP, UDP или через трубы (http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%82%D0%BE%D0%BA_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85), но точно лучше избегать сообщений винды в данном случае
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 19:33