На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Идентификатор окна и сообщения

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Идентификатор окна и сообщения
 
Добрый день!

Использую GTK 14.4 .0, Qt-4.8.7 и MinGW-4.9.2-i686
При использовании функций типа mapBuildMtw или LoadSxfToMap последним параметром указывается идентификатор окна для отсылки сообщений прогресса обработки: (..., (HWND)winId())
Далее в диалоге реализую обработчик winEvent(MSG*, long), в котором проверяю MSG->message == 0x0585 и получаю процент выполнения из MSG->wParam

Вроде все прекрасно. Но при использовании Qt-5.14 и MinGW-7.3.0 такая схема не работает - обработчик winEvent ни разу не вызывается. Причем и для x86 и для x64 версий.

Подскажите, как при использовании Qt5 обрабатывать события прогресса обработки или в чем может быть проблема?
 
mapBuildMtw передает процент выполнения с помощью сообщения 0x0581, см. описание:
Скрытый текст


При загрузке из SXF отсылаются следующие сообщения:
Цитата

#define WM_INFOLIST    0x584           // Информация о листе
#define WM_OBJECT       0x585           // Смена объекта (wparam = % выполнения, lparam = число обработанных элементов)
#define WM_ERROR        0x587           // Информация об ошибках для записи в журнал
#define WM_ERRORSXF   WM_ERROR  // Информация об ошибках обработки SXF

Если на одной и той же версии ГИС-ядра в Qt4 всё работает, а в Qt5 - нет, напрашивается вывод, что проблема снаружи.
Если обработчик не заходит в winEvent совсем (ни с каким кодом сообщения), значит, сообщения либо не отправляются, либо отправляются не тому HWND.

Как запрашивается и передается HWND? winEvent - это метод класса или отдельная оконная функция?

Попробуйте создать окно штатными средствами Windows, а не средствами Qt,
привязав к нему обработчик - процедуру соответствующего типа.
По окончании работы - удалить окно.
 
Цитата
Денис Вицко написал:
Как запрашивается и передается HWND?
LoadSxfToMap(..., (HWND)winId())

Цитата
Денис Вицко написал:
winEvent - это метод класса или отдельная оконная функция?
Метод класса QWidget в Qt4. Но в Qt5 его нет - там надо использовать обработчик nativeEvent()

У меня получилось - может кому пригодится :-)
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности