Плагин просмотра изображений — часть 2

в предыдущем потоке ( Добавление пользовательского интерфейса в плагин для просмотра изображений ) У меня есть хорошее представление о том, как добавить элементы управления графическим интерфейсом в плагин Firebreath. Таксилиан отметил, что когда я использую оконный плагин под Windows, он должен быть простым. В основном, как разработка любого другого приложения для Windows.

Теперь, чтобы убедиться, что я правильно понимаю. Я предполагаю создать дочернее окно из дескриптора окна, предоставленного событием onWindowAttached. Чтобы создать такое дочернее окно, мне нужно зарегистрировать такой класс окон с помощью ::RegisterClassEx(...), чтобы иметь свою собственную оконную процедуру. Это правильно? Я имею в виду, как еще получить доступ к событиям WM_COMMAND?

Как только это будет сделано, мне нужно ::CreateWindowEx(...) мое дочернее окно с помощью hwnd из плагина.

Это правильный образ мыслей?

Спасибо вперед, Кристиан


person chhenning    schedule 25.07.2012    source источник


Ответы (1)


На самом деле создание дочернего окна необязательно; События WM_COMMAND для вашего фактического окна плагина будут доставляться инкапсулированными в WindowsEvent, которые вы можете перехватывать так же, как получаете AttachedEvent. Все события Windows отправляются таким образом.

Другой вариант - сделать то, что вы описываете, и зарегистрировать новый класс в WINPROC и создать дочернее окно. Основная причина этого заключается в том, что вам может быть легче взаимодействовать с абстракцией, такой как wxWidgets и т. Д., Поскольку она не будет знать, что такое FireBreath, чтобы получать от нее события таким образом. Любой метод должен работать нормально.

person taxilian    schedule 25.07.2012
comment
Спасибо! Я создам небольшой тестовый плагин с меню. Вам будет интересен код в качестве примера? - person chhenning; 25.07.2012
comment
Проект FireBreath всегда ценит примеры кода =] пользователи ценят их еще больше - person taxilian; 25.07.2012
comment
Я сделал несколько тестов прошлой ночью, и все работает, как и ожидалось. Это круто! - person chhenning; 27.07.2012