2011-01-14 2 views
4

Mon programme doit arbitrairement maximiser toute fenêtre sur le bureau actuel. J'obtiens ceci en appelant ShowWindow(hWnd, SW_MAXIMIZE), où hWnd est le HWND de la fenêtre que je veux maximiser. Lorsque cette ligne de code exécute, la fenêtre en question (ici, le Bloc-notes) ressemble à ceci:Problème lors de la maximisation de la fenêtre en C++

alt text

Tout semble bien, à l'exception du fait que la fenêtre n'a pas été positionné correctement, à savoir la fenêtre semble être à quelques pixels à bas, et la barre de titre ne semble pas "écrasé" comme il se doit. Par rapport à la façon dont il devrait ressembler lorsque le bouton Maximize est cliqué, le problème est clairement visible:

alt text

Est-ce que quelqu'un sait pourquoi ce problème se produit, et ce que je peux faire pour y remédier?

Répondre

10

Dire que la fenêtre se maximise peut contourner certains ajustements internes que le programme effectue lorsqu'il maximise via une commande de menu système. Pour émuler en cliquant sur le bouton Maximize, envoyer une commande SC_MAXIMIZE:

SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0); 
+0

Merci, je vais l'essayer et vous dire si cela fonctionne. – AniDev

+0

Oui, cela a fonctionné. – AniDev

0

Antoher façon d'utiliser SetWindowPos(); Par exemple vous avez HWND handleWnd;

RECT rcWnd; 
GetWindowRect(handleWnd,&rcWnd); 
SetWindowPos(handleWnd,WHND_TOP,rcWnd.left,rcWnd.top,(rcWnd.right-rcWnd.left),(rcWnd.bottom-rcWnd.top),SWP_SHOWWINDOW); 

Vous avez obtenu votre position précédente, placer des fenêtres sur le dessus de Z et montrent

Questions connexes