Win32: возвращение свернутого и скрытого окна наверх - PullRequest
2 голосов
/ 14 февраля 2009

Я не могу восстановить окно после "сворачивания" окна в трей, делая это в wndproc:

case WM_SIZE:
  if (wparam==SIZE_MINIMIZED) {
    ShowWindow(hwnd,SW_HIDE);
  }
  break;

Обработчик сообщений в трее выглядит так:

case TRAY_ICON_MESSAGE:
  switch(lparam) {
  case WM_LBUTTONDOWN:
    ShowWindow(hwnd, SW_RESTORE);
    BringWindowToTop(hwnd);
    SetFocus(hwnd);
    break;
  // ...

Окно снова появляется, но всегда скрыто под другими окнами и не достигает вершины. Похоже, что ни SetFocus (), ни BringWindowToTop () не имеют никакого эффекта.

Ответы [ 3 ]

2 голосов
/ 14 февраля 2009

Не могли бы вы посмотреть, возвращают ли функции какие-либо ошибки?

Вы также можете взглянуть на SetForegroundWindow

0 голосов
/ 15 февраля 2009

Никогда не используйте SetForeground.

См. Замечания MSDN.

0 голосов
/ 14 февраля 2009
if (::IsIconic(hwnd))  
    ShowWindow(hwnd, SW_RESTORE);  

::SetForegroundWindow(hwnd);  
::BringWindowToTop(hwnd);
...