Récupérer résolution [Résolu]

Stenograf - 19 juin 2013 à 21:25 - Dernière réponse :  Stenograf
- 21 juin 2013 à 10:44
Bonsoir,

J'aimerai savoir si il est possible en C/C++ de récupérer la résolution de l'écran
pour ensuite l'afficher dans un MessageBox ?

Merci d'avance.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscriptionModérateurStatut 14 novembre 2014 Dernière intervention - 20 juin 2013 à 12:02
3
Merci
Tu peux par exemple utiliser wsprintf() pour former le message à afficher avec MessageBox():
char buffer[256];
int largeur=GetSystemMetrics(SM_CXSCREEN);
int hauteur=GetSystemMetrics(SM_CYSCREEN);
wsprintf(buffer,"Votre résolution est de %u*%u",largeur,hauteur);
MessageBox(0,buffer,"Résolution",0);

Merci racpp 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de racpp
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscriptionModérateurStatut 14 novembre 2014 Dernière intervention - 20 juin 2013 à 01:50
0
Merci
Salut,
Sous Windows, tu peux utiliser GetSystemMetrics() comme ceci:
int largeur=GetSystemMetrics(SM_CXSCREEN);
int hauteur=GetSystemMetrics(SM_CYSCREEN);

Il y'a aussi GetDeviceCaps comme ceci:
HDC hdc=GetDC(0);
int largeur=GetDeviceCaps(hdc, HORZRES);
int hauteur=GetDeviceCaps(hdc, VERTRES);

Si tu veux dire par résolution le nombre de points par pouce tu fais comme ceci:
HDC hdc=GetDC(0);
int resverticale=GetDeviceCaps(hdc, LOGPIXELSX);
int reshorizontale=GetDeviceCaps(hdc, LOGPIXELSY);
Commenter la réponse de racpp
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscriptionModérateurStatut 14 novembre 2014 Dernière intervention - 20 juin 2013 à 04:05
0
Merci
Je viens de relire ma réponse. J'ai fait une petite erreur dans le dernier exemple. J'ai inversé les noms des variables. Voici l'exemple corrigé:
HDC hdc=GetDC(0);
int reshorizontale=GetDeviceCaps(hdc, LOGPIXELSX);
int resverticale=GetDeviceCaps(hdc, LOGPIXELSY);
A ne pas oublier également d'utiliser ReleaseDC() à la fin pour libérer le HDC:
ReleaseDC(0,hdc); 
Commenter la réponse de racpp
Stenograf - 20 juin 2013 à 10:36
0
Merci
Merci racpp, cependant je ne sais pas trop comment envoyer l'information dans un MessageBox.

Exemple : Votre résolution est 1024*768.

Comme je débute, c'est plutôt normal.

Je vais torturer mon compilo avec des essais, je verrais bien.

Merci pour ta réponse.
Commenter la réponse de Stenograf
Stenograf - 20 juin 2013 à 12:59
0
Merci
Comme ça, Je me coucherais moins c.. ce soir.

Bon, si j'ai bien compris printf mode console et wsprintf mode GUI ?

Dans :
Tu peux par exemple utiliser wsprintf()


Tu sous-entends par là que ça n'est pas la seule possibilité...
wsprintf() n'est donc pas le seul moyen pour afficher la valeur si j'ai bien compris.

Que veux-tu, j'aime comprendre, mais je sais aussi que je peux me tromper dans mes suppositions.
C'est ça les gros débutants.

Merci encore racpp.

Excellente après-midi.
Commenter la réponse de Stenograf
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscriptionModérateurStatut 14 novembre 2014 Dernière intervention - 21 juin 2013 à 03:23
0
Merci
printf = mode console et wsprintf = mode GUI ?

Non pas du tout.
wsprintf() sert à préparer, dans un buffer, la chaine de caractères à afficher avec MessageBox() dans l'exemple. C'est un équivalent de sprintf() qui permet, justement, de former une chaine de caractères dans un buffer à partir de différents paramètres. Elle ressemble à printf() mais au lieu d'afficher le texte formaté à l'écran, elle le met dans un buffer qu'on pourra utiliser par la suite.
J'ai choisi wsprintf() pour simplicité de code car sinon, on aura besoin de définir une chaine initiale, convertir les variables en chaines et concaténer le tout.
En mode GUI, on affiche du texte sur un contrôle (bouton, static, edit etc) en utilisant la fonction SetWindowText().
Commenter la réponse de racpp
Stenograf - 21 juin 2013 à 10:44
0
Merci
Ce que je voulais dire par là, c'est que si on aurait voulu se servir de printf seulement,
il n'aurait pas été possible (enfin je pense) de récupérer la chaine dans un MessageBox.

D'où ma déduction (maladroite j'en conviens) : printf mode console et wsprintf mode GUI

Mais là encore, je n'affirme rien (ça risque pas).

Merci en tout cas pour ton explication claire, même si je n'aurai pas été contre un bref aperçu
de ton autre exemple...

On aura besoin de définir une chaine initiale, convertir les variables en chaines et concaténer le tout.


J'aime comprendre et j'adore l'API (WIN32 seulement).

En tout cas je peux te dire que si les informations/réponses sur la toile pouvaient êtres
aussi claires que les tiennes, le temps de gagné serait conséquent.

Merci encore.
Commenter la réponse de Stenograf

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.