Как я могу определить, когда мое приложение свернуто? - PullRequest
4 голосов
/ 11 февраля 2011

У меня есть программа с возможностью включить минимизацию в области уведомлений панели задач.Чтобы это работало, мне нужен надежный способ определения того, когда пользователь свернул приложение.

Как я могу это сделать, используя Windows API в приложении C ++?

Ответы [ 4 ]

5 голосов
/ 11 февраля 2011

Когда пользователь свернет окно (используя поле в строке заголовка или выбрав опцию «Свернуть» в системном меню), ваше приложение получит сообщение WM_SYSCOMMAND .Параметр wParam этого сообщения будет содержать значение SC_MINIMIZE, которое указывает конкретный тип запрашиваемой системной команды.В этом случае вас не волнует lParam.

. Поэтому вам нужно настроить карту сообщений, которая прослушивает сообщение WM_SYSCOMMAND с wParam, установленным на SC_MINIMIZE.Получив такое сообщение, вы должны выполнить свой код, чтобы свернуть приложение в область уведомлений панели задач, и вернуть 0 (указывая, что вы обработали сообщение).

Я не уверен, что такое GUI Frameworkвы используетеПример кода может выглядеть очень по-разному для разных наборов инструментов.Вот что вы можете использовать в прямом приложении Win32 C:

switch (message)
{
case WM_SYSCOMMAND:
    if ((wParam & 0xFFF0) == SC_MINIMIZE)
    {
        // shrink the application to the notification area
        // ...

        return 0;
    }
    break;
}
0 голосов
/ 15 августа 2017

Это то, что IsIconic должно определить, но это не работает для меня постоянно. (О, для последовательного способа определить это ...)

0 голосов
/ 27 июля 2013

Вы можете проверить размер области, возвращаемой из GetClientRect - если ноль минимизирован, работает для меня, но может работать не во всех случаях.

0 голосов
/ 11 февраля 2011

Я думаю, что вы ищете WM_SIZE.Когда вы получите это, проверьте wParam, чтобы получить подробности.Вот страница MSDN.

WM_SIZE

...