Programmation En C + Win API: Comment Obtenir Windows 7 Regarder Pour les Contrôles?
Je suis de programmation strictement en C et WinAPI, pas de C++ ou C#. Je suis un débutant et juste apprendre à dessiner les contrôles etc. Le truc, c'est que quand je créer des Fenêtres ou d'autres contrôles comme des Boutons de Commande, ils ont Native de Windows look. Jetez un oeil à ceci:
Mais dans Windows 7, les boutons de commande ressemble à ceci:
Maintenant, comment puis-je obtenir des boutons de commande dans mon programme à regarder comme ça. Est-il même possible?
Je suis la suite de ce tutoriel, pour référence: http://zetcode.com/gui/winapi/
Grâce.
Vous devez vous connecter pour publier un commentaire.
Vous permettre de styles visuels pour votre application en fournissant un manifeste XML, soit en tant que fichier distinct ou comme une ressource incorporée. Voir L'Activation Des Styles Visuels pour plus de détails.
C'est la façon dont les contrôles regardé en arrière dans les années 1990, avant thèmes (visual styles) ont été inventés. Comme vous l'avez remarqué, moderne boutons sont désormais peints de toutes les fantaisie-pantalon avec des dégradés et palpitant et tout ça. Mais en arrière pour des raisons de compatibilité, vous devez spécifiquement demande que vos contrôles que le traitement, ou ils vont revenir à l'héritage de style.
Vous le faire en spécifiant un manifeste. Vous pouvez soit ajouter un format de texte brut à votre répertoire racine de l'application, ou vous pouvez disposer de Visual Studio (2005 et après) incorporer automatiquement dans votre EXE.
La seconde voie est la façon dont j'allais. Ajoutez le code suivant à votre
stdafx.h
fichier à informer le compilateur que vous souhaitez ajouter le manifeste automatiquement lors de la construction de votre projet:Cet article MSDN a plus d'informations sur les styles visuels que vous pourriez jamais vouloir.
Et si vous voulez vraiment que votre demande de regarder natif, vous avez besoin de changer l'arrière-plan de la brosse utilisée dans la fenêtre principale. Par défaut, il est configuré pour utiliser la même couleur qu'une zone de texte de l'arrière-plan (blanc).
Vous souhaitez utiliser la couleur utilisée pour peindre les contrôles 3D, à la place. Modifier la
hbrBackground
membre de votreWNDCLASS
(ouWNDCLASSEX
) la structure, comme indiqué ici:Pourquoi avez-vous à ajouter 1? En arrière pour des raisons de compatibilité, de nouveau. Les détails sont ennuyeux. 🙂
stdafx.h
était juste une suggestion, car il est inclus dans les modèles par défaut. Il est utilisé pour les en-têtes précompilés, quelque chose que vous voulez probablement obtenir utilisé pour si vous allez créer n'importe quel non-trivial applications dans le futur. Et le code indique au compilateur pour automatiquement créer et insérer un manifeste. Il est tout au sujet de ce qui manifeste. Heureux que vous avez été en mesure de le comprendre!Vous vous souvenez sans doute lorsque Windows XP est arrivé avec ce nouveau look, et vous pourriez revenir en arrière à Windows 95/2000 d'apparence classique, ou vous pouvez changer le thème de couleur. Qui a été appelé les styles visuels, qui a Windows une meilleure mise en forme de soutien.
Styles visuels resté comme une fonction depuis. Windows Vista et Windows 7 introduit Aero, mais ils ont encore permis à l'aide d'un thème classique. Windows 8 a supprimé les deux Aero et le thème classique, et a ajouté le Métro thème. Contraste élevé, les thèmes sont désormais partie des styles visuels et n'ont pas l'apparence classique plus.
Ainsi, un classique sur le thème de l'application dans Windows 7 quand il a été prévu un style Aero, est un problème avec le style visuel de l'application. Je ne suis pas sûr pourquoi, mais Microsoft n'a pas quitté le vieux thème classique en option lors de la migration de l'API pour le nouveau look.
Alors, comment dois-je appliquer le style moderne?
De toute façon cet article MSDN explique comment activer les styles visuels pour votre application. J'ai vu des gens dire que l'activation de l'Unicode (définition de
UNICODE
) permettrait de le faire, mais il est pas nécessaire. Fondamentalement, vous avez juste besoin d'écrire un fichier de manifeste de la spécification de la version 6 de contrôles communs DLL comme exigence, puis de l'intégrer comme une ressource ou un lieu en vertu deappname.exe.manifest
dans le répertoire de l'exécutable. Un exemple manifeste ressemblerait à ceci:Si vous optez pour l'option d'intégration, n'oubliez pas de
winuser.h
inclus dans votre fichier de ressources. Vous pouvez également initialiser les contrôles communs DLL dans votreWinMain
, selon ce guide de MinGW: