2012-02-18 4 views
1

J'ai créé une fenêtre avec un chrome personnalisé par:emplacement d'une fenêtre maximisée avec chrome personnalisé

  1. Manipulation WM_NCHITTEST et retourner les valeurs appropriées pour la légende de la fenêtre et les frontières,
  2. Avaler WM_NCPAINT (et WM_NCUAHDRAWCAPTION, WM_NCUAHDRAWFRAME),
  3. manutention WM_SETTEXT, WM_SETICON et WM_NCACTIVATE avec DefWindowProc en retirant temporairement WM_VISIBLE,
  4. Gestion WM_WINDOWPOSCHANGED pour appliquer une zone de fenêtre aux coins arrondis.

Le déplacement/redimensionnement est géré correctement par Windows. J'ai ajouté WS_THICKFRAME aux styles de fenêtre pour activer la fonctionnalité Aero Snap. Mais maintenant, lorsque la fenêtre est agrandie, elle est positionnée à (-5,-5) et ma barre de titre personnalisée est coupée (cela ne se produit pas sans WS_THICKFRAME).

Quelle est la bonne façon de résoudre ce problème? Qu'est-ce qui influence cette position? Il semble être sans rapport avec les valeurs renvoyées pour WM_NCHITTEST.

Répondre

0

Réponse tardive, mais il semble que personne d'autre n'ait répondu.

Vous pouvez vérifier lorsque la fenêtre est agrandie et prendre en compte la marge lorsque la fenêtre est agrandie. Vous souhaiterez peut-être gérer WM_NCCALCSIZE plutôt que WM_NCPAINT pour que la fenêtre entière apparaisse en tant que zone client plutôt que de peindre la zone non-client.

Il décrit une approche pour la mise en œuvre de chrome personnalisée (j'étais l'auteur): http://blogs.msdn.com/b/wpfsdk/archive/2008/09/08/custom-window-chrome-in-wpf.aspx

espoir qui aide,

Questions connexes