2009-02-14 10 views
2

Je suis incapable de restaurer une fenêtre après « minimiser » une fenêtre au plateau, en faisant cela en wndproc:Win32: De retour d'une minimisés et la fenêtre cachée en haut

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

Le gestionnaire de messages du plateau ressemble à ceci :

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

La fenêtre réapparaît, mais elle est toujours cachée sous les autres fenêtres et ne parvient pas au sommet. Ni SetFocus() ni BringWindowToTop() semblent avoir un effet.

Répondre

2

Pourriez-vous jeter un oeil si les fonctions retournent des erreurs?

Vous pouvez également jeter un oeil à SetForegroundWindow

+0

SetForegroundWindow fait l'affaire. Merci! – TrayMan

0
if (::IsIconic(hwnd)) 
    ShowWindow(hwnd, SW_RESTORE); 

::SetForegroundWindow(hwnd); 
::BringWindowToTop(hwnd); 
-1

Ne jamais utiliser setForeground.

Voir les remarques Msdn.

+0

Lesquels? La documentation semble indiquer qu'il est parfaitement acceptable d'utiliser dans certaines circonstances –

Questions connexes