Информация об изменениях

Сообщение Re: CEdit состояние от 20.11.2020 7:00

Изменено 20.11.2020 7:01 qaz77

Re: CEdit состояние
Здравствуйте, reider, Вы писали:

R>Подскажите как понять готов ли контрол для ввода?

R>Иными словами хочу понять, как проверить какому контролу будут направляться команда WM_CHAR

Клавиатурный ввод поступает окну, которое в данный момент владеет фокусом ввода.
Получить такое окно для текущего потока можно функцией WinAPI: HWND GetFocus() или в MFC: static CWnd* CWnd::GetFocus().

Окно при этом должно быть видимо и доступно (enabled).
Также часть клавиатурного ввода может быть перехвачена акселераторами непосредственно в цикле обработки сообщений.
Но то, что транслируется в WM_CHAR обычно не перехватывают.

В MFC можно, например, так сделать:
[сcode]
CEdit* pEditInFocus = DYNAMIC_DOWNCAST(CEdit, CWnd::GetFocus());
if (pEditInFocus) { ... }
[/сcode]
Re: CEdit состояние
Здравствуйте, reider, Вы писали:

R>Подскажите как понять готов ли контрол для ввода?

R>Иными словами хочу понять, как проверить какому контролу будут направляться команда WM_CHAR

Клавиатурный ввод поступает окну, которое в данный момент владеет фокусом ввода.
Получить такое окно для текущего потока можно функцией WinAPI: HWND GetFocus() или в MFC: static CWnd* CWnd::GetFocus().

Окно при этом должно быть видимо и доступно (enabled).
Также часть клавиатурного ввода может быть перехвачена акселераторами непосредственно в цикле обработки сообщений.
Но то, что транслируется в WM_CHAR обычно не перехватывают.

В MFC можно, например, так сделать:
CEdit* pEditInFocus = DYNAMIC_DOWNCAST(CEdit, CWnd::GetFocus());
if (pEditInFocus) { ... }