J'écris un petit programme pour me permettre de changer de résolution parce que mon projecteur ne peut pas gérer la même résolution que mon écran. Je sais déjà comment régler la résolution de l'écran en utilisant l'API Windows. Ainsi que lire la résolution actuelle en utilisant l'API Windows ou la boîte à outils QT4. Mon problème est que je veux un menu de toutes les différentes résolutions prises en charge par l'écran et la carte graphique. Ce programme sera distribué, j'ai donc besoin que le programme communique avec la carte graphique pour savoir ce qu'elle supporte. La seule API que je veux utiliser est l'API Windows, ou la boîte à outils QT4, mais je ne pense pas que QT4 le fasse à moins que vous n'utilisiez les widgets graphiques de façon étrange. Je suis sûr que c'est possible avec l'API WINDOWS. Je ne sais pas comment le faire. Oh et s'il vous plaît me couper un peu de mou, je suis familier avec QT4 et C++ mais je suis typiquement un programmeur Linux, j'écris ceci pour quelqu'un d'autre. La seule chose que j'ai jamais faite avec l'API Windows est de créer une boîte de message, de définir l'arrière-plan et d'utiliser les variables système. Alors s'il vous plaît expliquer le processus simplement. S'il vous plaît ne pas simplement poster un lien vers le msdn, je déteste leur documentation, et je déteste Microsoft. J'utilise Windows deux fois par an.C++ Recherche des résolutions prises en charge par la carte graphique
Répondre
Ce qui suit devrait probablement travailler pour vous dans le cas général
DEVMODE dm = { 0 };
dm.dmSize = sizeof(dm);
for(int iModeNum = 0; EnumDisplaySettings(NULL, iModeNum, &dm) != 0; iModeNum++) {
cout << "Mode #" << iModeNum << " = " << dm.dmPelsWidth << "x" << dm.dmPelsHeight << endl;
}
Cela devrait imprimer toutes les résolutions prises en charge sur l'écran en cours que le .exe est exécuté. En supposant que vous n'avez pas affaire à une carte graphique multi-affichage, cela devrait fonctionner. Sinon, vous devrez utiliser EnumDisplayDevices en boucle sur chaque affichage. Une fois que vous avez déterminé quelle résolution vous voulez, vous pouvez utiliser 'ChangeDisplaySettingsEx' pour changer l'affichage au mode que vous voulez. Utiliser DirectX est possible mais je ne le recommanderais pas car le code est beaucoup plus compliqué (initialiser DirectX et utiliser des pointeurs COM) à moins que vous envisagiez d'utiliser réellement DirectX pour plus que simplement déterminer des résolutions d'affichage.
c'est exactement ce que je voulais, je ne comprenais pas que chaque numéro de mode était chaque support res, et que 0 était actuel, merci –
n'est-ce pas intéressant que je puisse regarder un exemple de code et le comprendre mieux que info of the msdn –
@TheDude Tout le monde a un style d'apprentissage différent. Le vôtre et le mien semblent être «apprendre par l'exemple». – deed02392
De MSDN:
"Pour obtenir les paramètres d'affichage actuels, passer les ENUM_CURRENT_SETTINGS constantes dans le paramètre iModeNum à l'API EnumDisplaySettings, comme illustré par le code C++ suivant."
DEVMODE dm;
// initialize the DEVMODE structure
ZeroMemory(&dm, sizeof(dm));
dm.dmSize = sizeof(dm);
if (0 != EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm))
{
// inspect the DEVMODE structure to obtain details
// about the display settings such as
// - Orientation
// - Width and Height
// - Frequency
// - etc.
}
C'est drôle que le seul mot dans votre réponse soit un lien vers MSDN, que le questionneur a explicitement déclaré ne pas être intéressé par ... –
@ Frédéric Hamidi. J'ai ajouté un exemple. – YWE
Je ne vois pas où "The Dude" a dit cela du tout. Il a dit "API Windows", et le lien pointe vers une fonction dans GDI, qui fait partie de l'API Windows. Cela me semble être exactement ce qui a été demandé. –
- 1. Recherche des méthodes prises en charge par un fournisseur LINQ
- 2. Windows: comment obtenir des résolutions prises en charge par les caméras?
- 3. Directives du préprocesseur prises en charge par le compilateur RIM
- 4. Quelles sont les fonctions prises en charge par EF 4.0?
- 5. XNA sur la carte graphique
- 6. Detect langues prises en charge mobiles
- 7. Résultats de la recherche par carte
- 8. Quelles sont les fonctionnalités de C++ 11 prises en charge par Visual Studio 2010?
- 9. Autres langues prises en charge dans la reconnaissance vocale Sphinx
- 10. Quelles sont les langues exactes prises en charge par la vérification d'orthographe intégrée à WPF?
- 11. Prise en charge de différentes résolutions de moniteur
- 12. LINQ to SQL: existe-t-il une liste complète des méthodes d'extension IQueryable prises en charge?
- 13. Implémentation de la carte en C++
- 14. Les prises de contact SSL bidirectionnelles sont-elles prises en charge sur Android?
- 15. Plates-formes non prises en charge pour java.awt.Desktop.getDesktop()
- 16. Carte graphique et XNA 4.0
- 17. positionnement CSS avec IE8 - expressions pas prises en charge
- 18. Qu'est-ce qui contrôle la liste des langues prises en charge d'une application iPhone dans iTunes?
- 19. C++ obtenir la description d'une exception pris des prises (...) bloquer
- 20. C++ STL: recherche de carte par itérateur vers une autre carte
- 21. Plusieurs bases de données sont-elles prises en charge par le framework de test django?
- 22. Windows Phone 7: bibliothèques existantes non prises en charge?
- 23. Autoriser les bundles/plugins à ajouter aux extensions de document prises en charge par l'application Cocoa?
- 24. Manipulation exception AccessViolation des prises try C#
- 25. Recherche de carte générique dans C#
- 26. Comment modifier les cultures prises en charge dans un projet Silverlight
- 27. Quelles sont les polices prises en charge par les applications iPhone?
- 28. Pourquoi les connexions persistantes ne sont-elles pas prises en charge par URLLib2?
- 29. Surveillance de l'utilisation de la carte graphique
- 30. rendu WPF sans carte graphique
Une raison pour laquelle vous êtes limité à l'API Win32? L'API DirectX encapsule cette fonctionnalité afin que vous n'ayez pas à traiter avec différents fournisseurs de cartes graphiques. –
"S'il vous plaît ne pas simplement poster un lien vers le msdn, je déteste leur documentation, et je déteste Microsoft." Vraiment !? La documentation MSDN est généralement fantastique. – James