Я в основном программирую плагины, используя wxWidgets в комплекте Carbon, который
загружается во время выполнения. Хост-приложения, в которых запущены мои плагины
предоставить собственный дескриптор окна (WindowRef
), который я могу использовать, чтобы добавить свой пользовательский,
GUI-классы на основе wxWidgets.
Чтобы использовать дескриптор собственного окна с wxWidgets
классы, я должен был написать wxTopLevelWindow
класс-обертку, который делает все
WindowRef
инкапсуляция. Пока что это работает довольно хорошо, но под некоторыми
обстоятельства, я получил вертикальные смещения мыши в пределах wxGLCanvas
, если окно
класс дескриптора собственного окна не относится к типу "kFloatingWindowClass
".
Я могу обойти проблему, если отображаю информационную панель (wxPanel
) поверх
целое wxGlCanvas
и если пользователь скрывает информационную панель, то смещение мыши
ушел.
Теперь мои вопросы:
- Есть ли "простое" объяснение этого поведения?
- Можно ли использовать определенные вызовы методов для имитации эффекта информационной панели
без использования самой панели? Я пробовал несколько комбинаций
Update()
и
Refresh()
вызовы всех задействованных компонентов, но пока ни один из них не работал.
Даже использование wxSizer
здесь не могло помочь.
Иерархия окон, используемая подключаемыми приложениями:
wxCustomTopLevelWindow (WindowRef provided by host-application)
wxPanel (parent window for all application panel)
wxPanel (application info panel)
wxPanel (application main panel)
wxPanel (opengl main panel)
wxGlCanvas (main opengl canvas)
Есть идеи? Любая помощь очень ценится.