Предоставление фокуса для просмотра части окна (Visual C ++) - PullRequest
0 голосов
/ 28 июля 2010

Мне нужно простое решение, без использования MFC, ATL, AFX и т. Д. Так же, как вы включили бы только windows.h. Я сейчас говорю о решении Windows.

Моя проблема в том, что я хочу иметь возможность вернуть фокус на часть просмотра окна. Например, мое окно состоит из части просмотра, строки заголовка и строки меню. После нажатия alt фокус переходит к строке меню для навигации. Мне нужно иметь возможность вернуть этот фокус назад, чтобы увидеть часть. Я уже спросил на MSDN, но решение, которое они предоставили, не то, что я ищу, потому что оно использует MFC. MSDN протектор .

Если это невозможно, не могли бы вы описать, почему и предложить какое-то решение? Я ищу самое короткое решение, которое не повлияет на все приложение. Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 августа 2010

Другая теория ...

Очевидно, у вас есть какое-то родительское окно, когда вы создаете дочернее окно.

  1. Создайте свойство public / internal static главного окна, чтобы идентифицировать открытое в данный момент окно.
  2. Когда пользователь открывает дочернее окно, присвойте этому статическому свойству открытое окно (я бы сохранил указатель на окно)
  3. Когда пользователь нажимает alt, меню получает фокус. Вы можете использовать событие «onFocus» в меню, чтобы проверить, какая форма является текущей, проверив статическое свойство главного окна. Если окно должно удерживать фокус, верните фокус обратно. (вам может понадобиться кодировать открытый / внутренний метод в дочернем окне, чтобы получить фокус для определенного элемента управления из другого окна)

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

0 голосов
/ 30 августа 2010

Некоторое время назад я занимался Windows на C ++ ... в основном на C #.Так что, если что-то не так, не судите слишком сильно.

Окно должно иметь свойство «KeyPreview», если установлено значение «истина», все нажатые клавиши сначала будут зарегистрированы в форме.В окнах должно быть событие «KeyPress», после того, как реализовано четное и «KeyPreview» включено, окна будут обрабатывать событие нажатия до того, как приложение его получит.

Алгоритм выглядит так:*

Включено «KeyPreview» Реализовать «KeyPress» даже в окнах, которые теряют фокус после нажатия клавиши «Alt» Проверить, если key = «Alt».Если это так, отмените событие KeyPress.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...