Я пытаюсь использовать горячую клавишу, чтобы изменить прозрачность многослойного окна на пропуск сообщений мыши.
В своей основной функции я звоню
// make hotkey with WM_HOTKEY messages sent to hwnd's window procedure, id 1,
// no other keys to work, F5 as hotkey
// while checking for errors and it completes successfully. I also do the same
// (id of 2) for VK_F7 and it completes successfully.
RegisterHotKey (hwnd, 1, 0, VK_F5);
RegisterHotKey (hwnd, 2, 0, VK_F7);
В моей оконной процедуре у меня есть
case WM_HOTKEY:
MessageBox (hwnd, "Got here", "Attention", MB_OK);
// Other stuff I need to do here
Я пытался добавить MOD_CONTROL
, но безрезультатно.
Это действительно сработало раньше. Единственная разница сейчас в том, что я понял, что два окна решат проблемы, которые у меня были. В прошлый раз у меня был только один, и теперь у меня есть две оконные процедуры в моем приложении. Я удостоверился, что все идет правильно и все, но я не должен быть ограничен только одним окном ... Само окно отображается, так как я установил прозрачность на 100/255, чтобы он немного экранировал вид, и Я вижу этот экран.
Смена самого ключа ничего не делает, и сообщения WM_HOTKEY публикуются в очереди. Я собираюсь вручную отправить их в окно.
edit: ^ с SendMessage () не работает, посмотрим, получит ли он любые сообщения, и то же самое с другим окном, пока я на нем.
edit: окей, я чувствую себя идиотом за это, но у меня RegisterHotKey
было нулевое значение, так как я еще не создал это окно (я создал окно, которое сначала не получало сообщение горячей клавиши, и изначально оно сразу после этого). Проблема в том, что заключается в том, что, хотя я могу видеть это окно, и если я все это закомментирую, представление будет другим (без экрана), оно не получит никаких сообщений.
edit: я изменил название на что-то более подходящее с этой дополнительной информацией. Если это общая вещь, которую кто-либо испытал, я был бы рад услышать. Сейчас я предполагаю, что это моя обертка и создаю их вручную.
Major edit: я просто попытался использовать raw API вместо моей обертки, и при второй регистрации произошла ошибка. Я изменил имя класса, и теперь классы регистрируются, и окна создаются. Отображается также окно сообщения, которое появляется для горячих клавиш. Я думаю, что я забыл поставить витрину для них, хотя, я скажу, как это работает через секунду (редактировать: после того, как я перезагружаю свой компьютер еще раз !!!). Прежде чем вы спросите, я не потратил слишком много времени на свою обертку, и да, она имеет проверку ошибок, но использует аналогичную систему для установки / получения lasterror (), и я не проверял возвращаемые значения на них со второго казалось, что он был создан раньше.