Russian Qt Forum
Ноябрь 26, 2024, 15:13
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Взаимодействие приложений
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Взаимодействие приложений (Прочитано 15926 раз)
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Взаимодействие приложений
«
Ответ #15 :
Декабрь 24, 2018, 13:11 »
Цитировать
Вместо того, что бы взять готовую бизнес логику и реализовать к ней новый GUI.
Если, конечно, вся бизнес логика не вшита намертво в GUI
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Взаимодействие приложений
«
Ответ #16 :
Декабрь 24, 2018, 13:15 »
Цитата: m_ax от Декабрь 24, 2018, 13:11
Если, конечно, вся бизнес логика не вшита намертво в GUI
Где то в теме, Day писал, что она реализовано отдельно на C.
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Взаимодействие приложений
«
Ответ #17 :
Декабрь 24, 2018, 13:19 »
Цитата: Old от Декабрь 24, 2018, 13:15
Цитата: m_ax от Декабрь 24, 2018, 13:11
Если, конечно, вся бизнес логика не вшита намертво в GUI
Где то в теме, Day писал, что она реализовано отдельно на C.
Ну тогда вопросов нет)
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Day
Частый гость
Offline
Сообщений: 290
Re: Взаимодействие приложений
«
Ответ #18 :
Декабрь 24, 2018, 13:45 »
Возможно, использование ДЛЛ - не самый лучший путь. Первые проблемы уже появились. Но еще не все пути исчерпаны. Пока проблема в том, что виджеты не хотят создаваться без QApplication. Экспериментирую. Пытаюсь найти в интернете примеры использования Qt-DLL с ГУИ. Пока ничего не нашел. Может быть, напрасно ищу, и такого просто нет в природе?
Подумываю о другой схеме. Параллельный запуск Qt-приложения из W-приложения. И обмен сообщениями. (PostMessage)
Что мне нужно? Чтобы Qt создал виджет и передал его winId в W. Пока все.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Взаимодействие приложений
«
Ответ #19 :
Декабрь 24, 2018, 14:29 »
Цитата: Day от Декабрь 24, 2018, 13:45
Подумываю о другой схеме. Параллельный запуск Qt-приложения из W-приложения. И обмен сообщениями. (PostMessage)
Ой нет
Цитата: Day от Декабрь 24, 2018, 13:45
Что мне нужно? Чтобы Qt создал виджет и передал его winId в W. Пока все.
И что потом делать с этим HWND? Работать с ним средствами OWL - это вообще не годится (смысла в Qt никакого). Думаю надо стремится к такой схеме:
- заменить текущий событийный цикл на Qt-шный, т.е. QApplication::exec(), без этого вообще дороги нет. "Новые" окна будут работать. Теперь главное - обеспечить работоспособность злополучных "старых" (OWL) окон. "В принципе" это выглядит очень просто - нужно чтобы вызывалась ихняя WndProc. Так или иначе обработчик Qt получит событие OWL окна. Вот что дальше он будет с ним делать - надо смотреть. Навесить QCoreApplication::installNativeEventFilter, если туда придет упр-е - уже хорошо.
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Взаимодействие приложений
«
Ответ #20 :
Декабрь 24, 2018, 14:38 »
Цитировать
И что потом делать с этим HWND? Работать с ним средствами OWL - это вообще не годится (смысла в Qt никакого).
Смысл в том, что средствами Qt можно сделать очень красиво. HTML, шрифты, раскраска, таблицы... И просто, и естественно...
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Взаимодействие приложений
«
Ответ #21 :
Декабрь 24, 2018, 14:53 »
Цитата: Day от Декабрь 24, 2018, 14:38
Цитировать
И что потом делать с этим HWND? Работать с ним средствами OWL - это вообще не годится (смысла в Qt никакого).
Смысл в том, что средствами Qt можно сделать очень красиво. HTML, шрифты, раскраска, таблицы... И просто, и естественно...
Так эти красоты должны по меньшей мере рисоваться - а для этого нужны Qt события.
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Взаимодействие приложений
«
Ответ #22 :
Декабрь 24, 2018, 16:23 »
Цитировать
а для этого нужны Qt события.
Это понятно. Вот я и пытаюсь скрестить ужа с ежом:)
Какие были мои предположения. Вот Dll-Qt создает окно. Вместе с ним оно должно создать (указать адрес в структуре окна) его функцию. И вот в эту функции и должны как-то попадать сообщения, касающиеся этого окна. Но пока не попадают. Окно создается, его HWND передается, но никаких видимых эффектов не происходит. Впрочем, пока рано о чем-то говорить, работа только начата и есть куда копать.
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Взаимодействие приложений
«
Ответ #23 :
Декабрь 24, 2018, 16:27 »
Одна из идей. По HWND адрес этой функции можно вытащить. А в OWL (и в WinAPI) можно назначить ее окну.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Взаимодействие приложений
«
Ответ #24 :
Декабрь 24, 2018, 17:31 »
Цитата: Day от Декабрь 24, 2018, 16:27
Одна из идей. По HWND адрес этой функции можно вытащить. А в OWL (и в WinAPI) можно назначить ее окну.
Насколько я понял, сейчас Вы хотите вживить Qt окно в OWL приложение. Думаю правильно наоборот, сразу "взять быка за рога" и сделать приложение Qt-шным, т.е. запустить QApplication::exec, и в Qt-шный цикл событий "инжектировать" события старых окон.
И забудьте Вы это плохое слово "dll". С наглой мордой объявляете в main QApplication и после создания OWL окна (окон) вызываете exec. Ну можно какое-нибудь Qt окно добавить для теста.
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Взаимодействие приложений
«
Ответ #25 :
Декабрь 24, 2018, 19:05 »
Цитировать
С наглой мордой объявляете в main QApplication и после создания OWL окна (окон) вызываете exec.
Наглость-то на своей морде нарисовать сумею (если, конечно, существующей не хватает
Но вот как мне создавать OWL-окна в Qt-приложении, ума не приложу. Даже как-то и не думал в этом направлении, и с какого конца подойти не знаю...
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Взаимодействие приложений
«
Ответ #26 :
Декабрь 25, 2018, 10:12 »
Цитата: Day от Декабрь 24, 2018, 19:05
Но вот как мне создавать OWL-окна в Qt-приложении, ума не приложу. Даже как-то и не думал в этом направлении, и с какого конца подойти не знаю...
OWL окна создаете так же как и сейчас, нужно только выключить событийный цикл OWL. Все равно дело сведется к WinAPI вызову CreateWindow или подобному. В конце-концов вызов ф-ций WinAPI из Qt приложения не запрещен.
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...