Comment dessiner bouton personnalisé dans la barre de titre de la Fenêtre avec Windows Forms?
Comment pouvez-vous tirer un bouton personnalisé à côté de la minimiser, maximiser et fermer les boutons dans la barre de titre du Formulaire?
Je sais que vous avez besoin pour utiliser l'API Win32 appels et remplacer le WndProc procédure, mais je n'ai pas été en mesure de découvrir une solution qui fonctionne.
Personne ne sait comment faire cela? Plus précisément, est-ce quelqu'un connais un moyen de faire ce qui fonctionne sous Vista?
InformationsquelleAutor Chris Pietschmann | 2008-09-20
Vous devez vous connecter pour publier un commentaire.
La ci fonctionne sous XP, je n'ai pas Vista machine à portée de main pour le tester, mais je pense que vos problèmes sont steming à une mauvaise hWnd en quelque sorte. De toute façon, avec le mal d'un code commenté.
Je sais, ça fait longtemps depuis la dernière réponse, mais cela m'a vraiment aidé récemment et je voudrais mettre à jour le code fourni par Chris avec mes commentaires et modifications.
La version fonctionne parfaitement sur Win XP et Win 2003. Sur Win 2008 ot a un petit bug que je n'étais pas en mesure d'identifier, lorsque le redimensionnement des fenêtres. Fonctionne sur Vista trop (pas-Aero), mais notez que la barre de titre, les boutons ne sont pas carrés, et un bouton de dimensions à prendre en compte.
Le code montre les messages qui réveillon à traiter et la manière de les traiter.
Le code utilise une collection de custom TitleBarButton objets. Cette classe est trop gros pour être inclus ici, mais je peux fournir si nécessaire avec un exemple.
Dessin semble être la partie la plus facile, la suite ne sera que:
[Edit: Code retiré, voir mon autre réponse]
Le vrai problème est le passage de l'état et de la détection des clics sur le bouton... pour cela, vous aurez besoin de s'accrocher dans le message global de gestionnaire pour le programme .NET semble cacher les événements de souris pour une forme bien que pas dans le conteneur réel (ie. mouvements de souris et clique sur la barre de titre). Je suis à la recherche d'info sur ce, de la trouver, je suis en train de travailler sur elle, ne devrait pas être trop dur... Si nous pouvons comprendre ce que ces messages sont en fait passer.