Russian Qt Forum
Ноябрь 23, 2024, 02:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Взаимодействие приложений  (Прочитано 15897 раз)
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #15 : Декабрь 24, 2018, 13:11 »

Цитировать
Вместо того, что бы взять готовую бизнес логику и реализовать к ней новый GUI.
Если, конечно, вся бизнес логика не вшита намертво в GUI Улыбающийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #16 : Декабрь 24, 2018, 13:15 »

Если, конечно, вся бизнес логика не вшита намертво в GUI Улыбающийся
Где то в теме, Day писал, что она реализовано отдельно на C.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #17 : Декабрь 24, 2018, 13:19 »

Если, конечно, вся бизнес логика не вшита намертво в GUI Улыбающийся
Где то в теме, Day писал, что она реализовано отдельно на C.
Ну тогда вопросов нет)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #18 : Декабрь 24, 2018, 13:45 »

Возможно, использование ДЛЛ - не самый лучший путь. Первые проблемы уже появились. Но еще не все пути исчерпаны. Пока проблема в том, что виджеты не хотят создаваться без QApplication. Экспериментирую. Пытаюсь найти в интернете примеры использования Qt-DLL с ГУИ. Пока ничего не нашел. Может быть, напрасно ищу, и такого просто нет в природе?
Подумываю о другой схеме. Параллельный запуск Qt-приложения из W-приложения. И обмен сообщениями. (PostMessage)
Что мне нужно? Чтобы Qt создал виджет и передал его winId в W. Пока все.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Декабрь 24, 2018, 14:29 »

Подумываю о другой схеме. Параллельный запуск Qt-приложения из W-приложения. И обмен сообщениями. (PostMessage)
Ой нет
Что мне нужно? Чтобы Qt создал виджет и передал его winId в W. Пока все.
И что потом делать с этим HWND? Работать с ним средствами OWL - это вообще не годится (смысла в Qt никакого). Думаю надо стремится к такой схеме:

- заменить текущий событийный цикл на Qt-шный, т.е. QApplication::exec(), без этого вообще дороги нет. "Новые" окна будут работать. Теперь главное - обеспечить работоспособность злополучных "старых" (OWL) окон. "В принципе" это выглядит очень просто - нужно чтобы вызывалась ихняя WndProc. Так или иначе обработчик Qt получит событие OWL окна. Вот что дальше он будет с ним делать - надо смотреть. Навесить QCoreApplication::installNativeEventFilter, если туда придет упр-е - уже хорошо.
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #20 : Декабрь 24, 2018, 14:38 »

Цитировать
И что потом делать с этим HWND? Работать с ним средствами OWL - это вообще не годится (смысла в Qt никакого).
Смысл в том, что средствами Qt можно сделать очень красиво. HTML, шрифты, раскраска, таблицы... И просто, и естественно...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #21 : Декабрь 24, 2018, 14:53 »

Цитировать
И что потом делать с этим HWND? Работать с ним средствами OWL - это вообще не годится (смысла в Qt никакого).
Смысл в том, что средствами Qt можно сделать очень красиво. HTML, шрифты, раскраска, таблицы... И просто, и естественно...
Так эти красоты должны по меньшей мере рисоваться - а для этого нужны Qt события.
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #22 : Декабрь 24, 2018, 16:23 »

Цитировать
а для этого нужны Qt события.
Это понятно. Вот я и пытаюсь скрестить ужа с ежом:)
Какие были мои предположения. Вот Dll-Qt создает окно. Вместе с ним оно должно создать (указать адрес в структуре окна) его функцию. И вот в эту функции и должны как-то попадать сообщения, касающиеся этого окна. Но пока не попадают. Окно создается, его HWND передается, но никаких видимых эффектов не происходит. Впрочем, пока рано о чем-то говорить, работа только начата и есть куда копать.
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #23 : Декабрь 24, 2018, 16:27 »

Одна из идей. По HWND адрес этой функции можно вытащить. А в OWL (и в WinAPI) можно назначить ее окну.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #24 : Декабрь 24, 2018, 17:31 »

Одна из идей. По HWND адрес этой функции можно вытащить. А в OWL (и в WinAPI) можно назначить ее окну.
Насколько я понял, сейчас Вы хотите вживить Qt окно в OWL приложение. Думаю правильно наоборот, сразу "взять быка за рога" и сделать приложение Qt-шным, т.е. запустить QApplication::exec, и в Qt-шный цикл событий "инжектировать" события старых окон.

И забудьте Вы это плохое слово "dll". С наглой мордой объявляете в main QApplication и после создания OWL окна (окон) вызываете exec.  Ну можно какое-нибудь Qt окно добавить для теста.
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #25 : Декабрь 24, 2018, 19:05 »

Цитировать
С наглой мордой объявляете в main QApplication и после создания OWL окна (окон) вызываете exec.
Наглость-то на своей морде нарисовать сумею (если, конечно, существующей не хватаетУлыбающийся
Но вот как мне создавать OWL-окна в Qt-приложении, ума не приложу. Даже как-то и не думал в этом направлении, и с какого конца подойти не знаю...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #26 : Декабрь 25, 2018, 10:12 »

Но вот как мне создавать OWL-окна в Qt-приложении, ума не приложу. Даже как-то и не думал в этом направлении, и с какого конца подойти не знаю...
OWL окна создаете так же как и сейчас, нужно только выключить событийный цикл OWL. Все равно дело сведется к WinAPI вызову CreateWindow или подобному. В конце-концов вызов ф-ций WinAPI из Qt приложения не запрещен.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.