У нас очень большое собственное приложение MFC. Он имеет главное окно с меню и сотни уникальных подокон (без меню), которые отображаются в верхней части главного окна (не все одновременно). Эти подокна реализованы как CDialog
с, но работают без мод CreateWindow
не DoModal
). Их родитель HWND
установлен в NULL
,
Недавно мы получили запрос на функцию — разрешить работу определенного ускорителя меню из главного окна, даже если одно из подокон является активным окном. Это имело бы смысл с точки зрения пользователя.
Это можно легко подделать с помощью клавиатуры для всего приложения, следя за этим точным нажатием клавиши, но мне было интересно, есть ли более чистый способ?
Вы можете также использовать RegisterHotKey()
в вашем главном окне. Это будет иметь побочный эффект, который будет вызывать новая горячая клавиша, даже если она нажата в другом приложении. Вы можете обойти это, сравнивая GetCurrentProcessId()
с GetWindowThreadProcessId(GetForegroundWindow())