Доброго времени суток.
Подскажите как понять готов ли контрол для ввода?
Иными словами хочу понять, как проверить какому контролу будут направляться команда WM_CHAR
Здравствуйте, 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) { ... }
Здравствуйте, qaz77, Вы писали:
Q>Здравствуйте, reider, Вы писали:
R>>Подскажите как понять готов ли контрол для ввода?
R>>Иными словами хочу понять, как проверить какому контролу будут направляться команда WM_CHAR
Q>Клавиатурный ввод поступает окну, которое в данный момент владеет фокусом ввода.
Q>Получить такое окно для текущего потока можно функцией WinAPI: HWND GetFocus() или в MFC: static CWnd* CWnd::GetFocus().
Q>Окно при этом должно быть видимо и доступно (enabled).
Q>Также часть клавиатурного ввода может быть перехвачена акселераторами непосредственно в цикле обработки сообщений.
Q>Но то, что транслируется в WM_CHAR обычно не перехватывают.
Q>В MFC можно, например, так сделать:
Q>Q>CEdit* pEditInFocus = DYNAMIC_DOWNCAST(CEdit, CWnd::GetFocus());
Q>if (pEditInFocus) { ... }
Q>
Спасибо. Это понял.
Сформулирую вопрос так, как определить что CEdit сейчас отрисовывает каретку?
Т.е. если я нажму правой клавишей то появляется мигающая каретка...
Если не щёлкать на контрол то каретку он не отрисывывает.
SetFocus пробовал, но при этом каретка не появляется
Здравствуйте, reider, Вы писали:
R>Если не щёлкать на контрол то каретку он не отрисывывает.
R>SetFocus пробовал, но при этом каретка не появляется
WM_NEXTDLGCTL message
Здравствуйте, VladFein, Вы писали:
VF>Здравствуйте, reider, Вы писали:
R>>Если не щёлкать на контрол то каретку он не отрисывывает.
R>>SetFocus пробовал, но при этом каретка не появляется
VF>WM_NEXTDLGCTL message
Спасибо!