Пройдите через клавишу акселератора, когда немодальное диалоговое окно вверх

У нас очень большое собственное приложение MFC. Он имеет главное окно с меню и сотни уникальных подокон (без меню), которые отображаются в верхней части главного окна (не все одновременно). Эти подокна реализованы как CDialogс, но работают без мод CreateWindowне DoModal). Их родитель HWND установлен в NULL,

Недавно мы получили запрос на функцию — разрешить работу определенного ускорителя меню из главного окна, даже если одно из подокон является активным окном. Это имело бы смысл с точки зрения пользователя.

Это можно легко подделать с помощью клавиатуры для всего приложения, следя за этим точным нажатием клавиши, но мне было интересно, есть ли более чистый способ?

4

Решение

Вы можете также использовать RegisterHotKey() в вашем главном окне. Это будет иметь побочный эффект, который будет вызывать новая горячая клавиша, даже если она нажата в другом приложении. Вы можете обойти это, сравнивая GetCurrentProcessId() с GetWindowThreadProcessId(GetForegroundWindow())

1

Другие решения


По вопросам рекламы [email protected]