Qt setParent (WinAPI) |
Здравствуйте, гость ( Вход | Регистрация )
Qt setParent (WinAPI) |
Гость_Andrey_* |
24.11.2010, 1:09
Сообщение
#1
|
Гости |
Есть такая проблема. Внедрил main form qt приложения в vcl mdi форму сишного приложения средствами Win API. Все отлично внедрилось, отрисовка работает, клавиатурные события обрабатываются, но мышь...
Вобщем qt форма продолжает использовать глобальные координаты вместо локальных. При этом весьма странное дело, какие то виджеты используют локальные координаты и ведут себя нормально, а какие глобальные и гонят... Че токо не пробовал со стороны сишного приложения чтобы исправить дело (средствами winapi), но ниче не помогает. Видимо придется менять в qt части (код доступен), вот только с чего начать не знаю. Какие будут предложения коллеги Забегая вперед скажу что пенести все в одну среду пока не вариант. Каждая составляющая 10000яч строк кода и написана разными людьми, так что пока нет возможности собрать все в кучу. |
|
|
Алексей1153 |
24.11.2010, 11:55
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
В винде есть такой прикол (случай из MFC, но он тем более показателен, так как тут классы, в отличие от чистого Си в АПИ) - в конструкторе класса окна хендл ещё не создан, поэтому дочерние окна оказываются в свободном полёте. Выхода два:
1) создавать дочерние после конструктора (WM_INITDIALOG или MFC::CView::OnInitDialog, или MFC::CDialog::OnInitialUpdate , либо в любой другой удобный момент) 2) после создания хендла окна задать родителя дочерям заново (в том же WM_INITDIALOG ) PS Конечно же, если использовался чистый WinAPI, то всё это неактуально, разве что был передан нулевой хендл в качестве родителя Сообщение отредактировал Алексей1153 - 24.11.2010, 13:27 |
|
|
Текстовая версия | Сейчас: 28.12.2024, 16:02 |