Récupérer résolution

Résolu
Stenograf - 19 juin 2013 à 21:25
 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.

7 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
20 juin 2013 à 12:02
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);
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
20 juin 2013 à 01:50
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);
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
20 juin 2013 à 04:05
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); 
0
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
21 juin 2013 à 03:23
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().
0
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.
0
Rejoignez-nous