3

通过在 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() 似乎都没有任何效果。

4

3 回答 3

2

你能看看函数是否返回任何错误吗?

你也可以看看SetForegroundWindow

于 2009-02-14T19:51:04.823 回答
0
if (::IsIconic(hwnd))  
    ShowWindow(hwnd, SW_RESTORE);  

::SetForegroundWindow(hwnd);  
::BringWindowToTop(hwnd);
于 2009-02-14T20:00:40.213 回答
-1

永远不要使用 SetForeground。

请参阅 Msdn 备注。

于 2009-02-15T06:55:18.380 回答