Настройка обратного вызова для обработки сообщений в трее в консольном проекте - PullRequest
1 голос
/ 08 ноября 2011

Я привык использовать WndProc для обработки сообщений proc, но теперь у меня есть консольный проект, и я хочу как-то обработать пользовательское сообщение WM_TRAYICON.

У меня есть функция обратного вызова, мне просто нужно заставить Windows вызывать ее всякий раз, когда кто-то взаимодействует со значком в трее. В недавней программе, которую я использовал, я использовал SetWindowsHookEx, можно ли использовать нечто подобное?

Ответы [ 2 ]

3 голосов
/ 09 ноября 2011

Вам необходимо создать скрытое окно для использования со значком уведомления. Вызовите CreateWindow как обычно, чтобы создать окно, но просто воздержитесь от его показа. Убедитесь, что вы не передаете WS_VISIBLE при создании окна.

Другая проблема в том, что вам нужен цикл сообщений. Поскольку консольное приложение не будет запускать цикл сообщений по умолчанию, самое простое решение - запустить значок уведомления из отдельного потока, который реализует цикл сообщений. Естественно, это подразумевает, что скрытое окно должно быть создано и уничтожено также в этом потоке.

0 голосов
/ 09 ноября 2011

Я предлагаю вам не делать консоль вашего проекта.Если вы хотите обрабатывать оконные сообщения законным способом (без хуков и хаков) и хотите иметь консоль, то типичным решением является использование функции AllocConsole .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...