Masquer automatiquement la barre de tâches n'apparaissant pas lorsque mon application est agrandie

StackOverflow https://stackoverflow.com/questions/137005

  •  02-07-2019
  •  | 
  •  

Question

Mon application dessine ses propres bordures et décorations de fenêtre. Cela fonctionne bien avec les barres de tâches Windows configurées pour se masquer automatiquement, sauf lorsque la fenêtre de mon application est agrandie. La barre des tâches ne va pas "rouler". Il se comportera normalement si l'application n'est pas maximisée, même si elle est dimensionnée jusqu'au bas de l'écran. Cela fonctionne même normalement si je redimensionne simplement la fenêtre pour occuper tout l’affichage (comme si elle était agrandie).

Était-ce utile?

La solution

J'ai trouvé le problème. Mon application traitait le message WM_GETMINMAXINFO et remplaçait les valeurs du paramètre enregistrement MINMAXINFO. Les valeurs qui étaient dans l'enregistrement ont été gonflées de 7 (largeur de bordure) la résolution en pixels de l'écran. Cela a du sens car, une fois maximisé, il pousse les bords de la fenêtre au-delà de la partie visible de l'écran. Il définit également le ptMaxPosition (point sur lequel l’origine de la fenêtre est définie lorsqu’il est agrandi) à -7, -7. Mon application définissait ce paramètre à 0,0 et la hauteur et la largeur maximales à exactement la taille de la résolution de l'écran (non gonflé). Je ne sais pas pourquoi cela a été fait; il a été écrit par un prédécesseur. Si je commente ce code et ne modifie pas la structure MINMAXINFO, le masquage automatique fonctionne.

Quant à savoir pourquoi, je ne suis pas tout à fait sûr. Il est possible que la détection permettant de faire apparaître un " autohidden " La barre des tâches est connectée au mécanisme de traitement des messages WM_MOUSEMOVE et non à WM_NCMOUSEMOVE. Avec mon application obligeant la maximisation à garer ma frontière juste en bas de l'écran, j'aurais généré des événements WM_NCMOUSEMOVE; avec le MINMAXINFO laissé seul, j'aurais généré WM_MOUSEMOVE.

Autres conseils

Cela dépend de l'activation ou non de "Garder la barre des tâches au-dessus des autres fenêtres" dans les propriétés de la barre des tâches. Si cette case est cochée, la barre des tâches apparaîtra.

Mais ne soyez pas tenté de modifier par programmation ce paramètre sur une machine des utilisateurs finaux juste pour répondre à vos besoins, cela est considéré comme une pratique grossière et une mauvaise pratique. Votre application doit s'adapter à l'environnement dans lequel elle est déployée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top