Добавление пользовательского интерфейса в плагин для просмотра изображений

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

Насколько я понимаю, у меня есть дескриптор hwnd, и поэтому я могу рисовать в окне. Я также понимаю, что у меня есть различные события, на которые я могу реагировать, например, нажатия кнопок мыши или нажатия клавиш. Но мне не удается добавить графические меню, кнопки и т. д. Я знаю, что мог бы использовать html вокруг окна, но это не тот путь, который мне нравится.

Например, имеет ли смысл отображать пользовательский интерфейс в автономном режиме (в памяти) на изображении, а затем каким-то образом отслеживать состояние внутри?

Кто-нибудь делал подобное? Или может кто-нибудь дать мне некоторое представление о том, как выполнить добавление пользовательского интерфейса.


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


Ответы (1)


Предполагая, что вы заботитесь только об окнах, и предполагая, что вы не возражаете против использования оконного плагина, который является самым простым (но никакие элементы HTML не могут плавать над плагином), это не должно отличаться от создания графического интерфейса в любом другом приложении Windows.

Вам предоставляется окно, которое появляется с AttachedEvent; при запуске DetachedEvent вам нужно прекратить использование окна. Многие люди создают дочернее окно внутри этого родительского окна и используют его для всего своего фактического реального кода, что немного упрощает использование одной из этих других абстракций, но в основном это все, что нужно. Я не знаю конкретно, как бы вы сделали это с QT или wxwidget, но вы бы создали дочернее окно этого HWND, которое вам дано, и абстракция сделает все за вас.

Что касается того, будет ли это отображать вещи за кадром и т. Д., Я понятия не имею; это будет полностью зависеть от оконной системы. Я не знаю причин, по которым вам нужно было бы это делать, и большинство вещей просто рисуются непосредственно в HWND, но есть миллион разных способов сделать это. Мне кажется, что вам действительно нужно понять, как на самом деле работает рисование в Windows.

Надеюсь, это поможет

person taxilian    schedule 24.07.2012
comment
Спасибо за ваш информативный ответ. Я надеюсь, вы не будете возражать, если я немного подумаю. Давайте пока остановимся на Win32 и GDI. Я знаю, как добавить меню программно. Таким образом, когда пользователь щелкает элемент управления меню, мне пришлось бы пересылать такое событие мыши в систему win32. Но как вернуть полученное изображение? - person chhenning; 25.07.2012
comment
Я не уверен, что вы подразумеваете под возвратом полученного изображения; вы рисуете в HWND, а не в какой-то закадровый буфер, для которого вам затем нужно получить пиксели и передать их на экран. - person taxilian; 25.07.2012
comment
Я создам еще одну ветку. Но сначала я сделаю некоторые тесты. Еще раз спасибо за ваше время. - person chhenning; 25.07.2012