Обрабатывать EVT_CHAR в wxFrame или wxDialog

0

Как мы все знаем, EVT_CHAR является основным событием, которое не распространяется на wxTopLevelWindow (wxFrame и wxDialog).

Но у меня есть wxDialog без каких-либо элементов управления wxWidgets, и вам нужно обрабатывать ввод пользовательской клавиатуры (обрабатывать событие EVT_CHAR).

Я видел вики о событиях ключа catch во всем мире, но не работает над событием EVT_CHAR, поскольку событие EVT_CHAR необходимо перевести, чтобы получить вход пользователя

И я стараюсь, чтобы wxDialog скрывал детей wxWindow, который в EVT_CHAR для своего родителя wxDialog. Он работает на платформе Windows, а не на OSX, которая является моей целевой платформой.

Есть ли способ его реализовать?

Теги:
macos
cocoa
wxwidgets

2 ответа

0
Лучший ответ

Наконец, я выполнил то, что хочу, в соответствии с этим: http://trac.wxwidgets.org/ticket/15345

В wxWidgets 3.0 wxNSView реализует протокол NSTextInputClient, который позволяет каждому виджету правильно обрабатывать EVT_CHAR.

Но EVT_CHAR по-прежнему не может обрабатываться wxDialog или wxFrame из-за некоторого вызова функции IsUserPanel(). Поэтому я прокомментировал некоторый призыв IsUserPanel, чтобы он работал для меня.

0

Зачем вам нужно обрабатывать всю клавиатуру в самом диалоге? Для этого есть два типичных случая: либо вы хотите обрабатывать нажатия клавиш в нескольких разных элементах управления одинаково, либо вам нужно обрабатывать некоторые нажатия клавиш (например, WXK_F1) во всех элементах управления. Первое может быть выполнено путем связывания одного и того же обработчика событий с несколькими элементами управления. Последний - с использованием таблицы ускорителей с записью для ключа, который вы хотите обрабатывать специально.

  • 0
    Спасибо за ответ. Фактически, я использую wxWidgets, чтобы помочь мне перенести программное обеспечение MFC с Windows на OSX, в котором у меня есть собственное окно и система управления. Поэтому я создаю wxDialog как контейнер, перенаправляющий пользовательский ввод в мою собственную систему управления.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню