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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Создаю свое окно, дочернее к qt-шному через CreateWindow в другом потоке. Падает  (Прочитано 12182 раз)
Caduceus
Гость
« Ответ #15 : Сентябрь 03, 2009, 14:11 »

А вот как это выглядит с движком:
Записан
Caduceus
Гость
« Ответ #16 : Сентябрь 03, 2009, 21:48 »

Тот минимальныйпример что я привел никого на мысль не натолкнул?
Записан
Tonal
Гость
« Ответ #17 : Сентябрь 04, 2009, 08:28 »

Я как-то наткнулся на то, что если для окна не реализовать обработку WM_GETTEXT + WM_GETTEXTLEN, то любой кто попросит его имя - зависнит. Улыбающийся
Например зависала функция FindWindow если не указан класс. Причём в любом приложении. Улыбающийся

Посмотри в исходники Qt/MFC Migration Framework
Может поможет.

Кстати, гугель, по запросу "winapi child window in other thread" выдал интересную ссылку:
http://www.eggheadcafe.com/software/aspnet/33723942/childrenparent-window-in.aspx
Записан
Caduceus
Гость
« Ответ #18 : Сентябрь 04, 2009, 08:56 »

Спасибо большое.
ОБработка WM_GETTEXT + WM_GETTEXTLEN ситуацию не изменило. А вот Ваша сссылка с Гугла оченно меня огорчила. Дело значит совсем не в Qt.

Не понтяно тогда, почему если я это окно вешаю над ActiveX -ом, то все нормально...
Записан
Tonal
Гость
« Ответ #19 : Сентябрь 04, 2009, 09:57 »

Про WM_GETTEXT я привёл просто для примера, не ожидая что они на что-нибудь повлияют.
По ссылке, вроде упоминали о каких-то обходных путях?

Про ActiveX - точно не уверен, но, возможно там не настоящее дочернее окно - не даром протокол встраивания дублирует функции и события WinApi.
В любом случае, MS туда очень много наворочили...
Записан
Caduceus
Гость
« Ответ #20 : Сентябрь 04, 2009, 10:08 »

Ураа, проблема решена. Видимо, если выносить окно в отделный поток, то гасится только цикл сообщений родителя этого кона в другом потоке. У меня сначала гасились все сообщения моего диалога, так как оно было родителем окна из второго потока. Выход из ситуации - сделать окно-заглушку в первом потоке и уже оно будет родителем окна во втором потке. То есть его цикл может и гасится - но пофигу становится. Именно поэтому у меня и работало с ActiveX-ом - там же ActiveX сам был этим окном-заглушкой.
И сейчас у меня полнофункциональная красота:
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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