Связка Qt+WinApi, Послать сигнал из WinApi в Qt объект |
Здравствуйте, гость ( Вход | Регистрация )
Связка 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), но точно лучше избегать сообщений винды в данном случае
|
|
|
Текстовая версия | Сейчас: 19.4.2024, 15:56 |