Почему MessageBox блокирует WM_HOTKEY, но не WM_TRAYICON в моей функции WindowProc? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему MessageBox блокирует WM_HOTKEY, но не WM_TRAYICON в моей функции WindowProc? [закрыто]

Сообщение Anonymous »

У меня есть структура NOTIFYICONDATA nid, определенная в первом экземпляре сообщения WM_CREATE. Идентификатор сообщения nid — WM_TRAYICON. Я обрабатываю сообщение WM_TRAYICON в WindowProc, которое связано с hWnd nid. Когда WM_TRAYICON обрабатывается, я вызываю MessageBox. Как я сейчас вижу, это похоже на процедуру блокировки. Я не могу обрабатывать сообщения WM_HOTKEY, зарегистрированные с помощью RegisterHotKey, все из которых были переданы NULL в их параметр hWnd. Модальное окно не позволяет мне взаимодействовать с окном, на которое ссылается hWnd, что нормально. Однако сообщения WM_TRAYICON по-прежнему обрабатываются. При каждом щелчке значка на панели задач вызывается MessageBox и появляется новое модальное окно. Мне интересно, может ли кто-нибудь объяснить, что здесь происходит. Значок на панели задач и содержащая его область состояния работают в другом потоке, чем остальная часть программы? Мое понимание потоков элементарно, поэтому я, возможно, неправильно использую это слово.
Я включил ссылку на суть, содержащую весь код, необходимый для запуска программы. Проблема в HandleTrayIconMessage. Я настроил проект, используя шаблон классического приложения Windows из Visual Studio 2022.

Подробнее здесь: https://stackoverflow.com/questions/786 ... oc-functio
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»