Mon application dessine toutes ses propres bordures et décorations. Cela fonctionne correctement avec les barres de tâches Windows configurées pour masquer automatiquement, sauf lorsque la fenêtre de ma demande est agrandie. La barre des tâches ne sera pas "enroulée". Il se comportera normalement si l'application n'est pas agrandie, même si elle est redimensionné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 s'il était agrandi).La barre des tâches Masquer automatiquement ne s'affiche pas lorsque l'application est agrandie
Répondre
J'ai trouvé le problème. Mon application traitait le message WM_GETMINMAXINFO et remplaçait les valeurs dans l'enregistrement du paramètre MINMAXINFO. Les valeurs qui étaient dans l'enregistrement ont été gonflées par 7 (largeur de la bordure) la résolution de pixel de l'écran. Cela a du sens en ce sens que lorsqu'il est agrandi, il pousse les limites de la fenêtre au-delà de la partie visible de l'écran. Il définit également le ptMaxPosition (point que l'origine de la fenêtre est définie lors de la maximisation) à -7, -7. Mon application réglait cela à 0,0, et la hauteur maximale et la largeur à exactement la taille de la résolution de l'écran (pas 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 à pourquoi, je ne suis pas entièrement sûr. Il est possible que la détection de l'ouverture d'une barre des tâches "autohidden" soit accrochée dans le mécanisme de gestion des messages WM_MOUSEMOVE, et non pour WM_NCMOUSEMOVE. Avec mon application provoquant l'agrandissement de ma bordure 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.
Cela dépend de la case à cocher "Conserver la barre des tâches au-dessus des autres fenêtres" dans les propriétés de la barre des tâches. Si elle 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 d'utilisateurs finaux juste pour répondre à vos besoins, c'est considéré comme une pratique grossière et mauvaise. Votre application doit s'adapter à l'environnement dans lequel elle est déployée.