Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Восстановление окна из SysTray


Автор: Onys 21.2.2007, 18:15
Здравствуйте!
У меня приложенение по нажатии на кнопку минимизироать должно "прятаться" в SysTray. Слеlующий код использую:
Код

case WM_SIZE:
        if (wParam == SIZE_MINIMIZED)
        {
            Shell_NotifyIcon(NIM_ADD, &IconData);
            ShowWindow(hWnd, SW_HIDE);
        }
        break;

И чтобы вернуть "на место":
Код

case WM_TRAYICON:
        if (wParam == IconID)
        {
            switch (lParam)
            {
            case WM_LBUTTONDOWN:
                Shell_NotifyIcon(NIM_DELETE, &IconData);
                ShowWindow(hWnd, SW_SHOWNORMAL);
                break;
            case WM_RBUTTONDOWN:
                Shell_NotifyIcon(NIM_DELETE, &IconData);
                ShowWindow(hWnd, SW_SHOWNORMAL);
                break;
            }
        }
        break;

Но оно возвращается на место следующим образом: появляется на панели задач, но в свернутом виде. Как это преодолеть?

Автор: 586 21.2.2007, 19:56
Цитата(Onys @  21.2.2007,  18:15 Найти цитируемый пост)
Код
case WM_SIZE:
        if (wParam == SIZE_MINIMIZED)
        {
            Shell_NotifyIcon(NIM_ADD, &IconData);
            ShowWindow(hWnd, SW_HIDE);
        }
        break;

замени на
Код

case WM_SYSCOMMAND:
 if(wParam==SC_MINIMIZE)
 {
  Shell_NotifyIcon(NIM_ADD, &IconData);
  ShowWindow(hWnd, SW_HIDE);
  return 1;
 }
 break;

Автор: Onys 22.2.2007, 10:28
Но тогда прийдется обрабатывать и закрытие окна - это ведь тоже WM_SYSCOMMAND...

Автор: 586 22.2.2007, 11:58
Цитата(Onys @  22.2.2007,  10:28 Найти цитируемый пост)
Но тогда прийдется обрабатывать и закрытие окна - это ведь тоже WM_SYSCOMMAND... 

Обрабатывай, если надо smile. Какие тут могут быть проблемы?

Автор: bugmenot 3.3.2007, 01:15
Цитата(Onys @  21.2.2007,  18:15 Найти цитируемый пост)
                ShowWindow(hWnd, SW_SHOWNORMAL);


Поменяй на
Код

ShowWindow(hWnd, SW_SHOWNORMAL);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)