IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Système > Moniteurs
        Comment obtenir la résolution de l'écran ?
        Comment changer la résolution de l'écran ?
        Comment revenir à la résolution par défaut de l'écran ?
        Comment lancer l'écran de veille défini par défaut ?
        Comment mettre en veille le moniteur ?
        Comment empêcher l'exécution de l'écran de veille et la mise en veille ?
        Comment obtenir des informations sur les polices du système ?
        Comment détecter la taille de la police d'affichage de Windows ?



Comment obtenir la résolution de l'écran ?
Créé le 01/09/2004[haut]
auteur : Geronimo
Avec C++Builder, vous avez à votre disposition l'objet Screen qui dispose d'un certain nombre de méthodes et propriétés concernant, comme son nom l'indique, l'écran. Pour obtenir la résolution, il suffit de récupérer la largeur et la hauteur de l'écran en pixels :

int width = Screen->Width; // longueur
int height = Screen->Height; // hauteur
ShowMessage("La résolution de l'écran est :" + IntToStr(width) + "*" + IntToStr(height));
lien : faq Comment changer la résolution de l'écran ?
lien : faq Comment revenir à la résolution par défaut de l'écran ?

Comment changer la résolution de l'écran ?
Mise à jour le 21/06/2006[haut]
auteurs : Atlantis, Ricky81, Bandit Boy
Voici une fonction qui fait cela très bien :

bool __fastcall ChangeResolution(int Width, int Height)
{
   TDeviceMode *Dev = new TDeviceMode;
   EnumDisplaySettings(0,ENUM_CURRENT_SETTINGS, Dev);
   Dev->dmPelsWidth = Width;
   Dev->dmPelsHeight = Height;
   Dev->dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
   bool result = (ChangeDisplaySettingsA(Dev, CDS_RESET) == DISP_CHANGE_SUCCESSFUL);
   delete Dev;
   return result;
}
Attention, cette fonction ne teste pas si votre écran supporte la résolution que vous souhaitez. Prévoyez au cas où dans votre développement de pouvoir revenir à la résolution précédente.

lien : faq Comment obtenir la résolution de l'écran ?
lien : faq Comment revenir à la résolution par défaut de l'écran ?

Comment revenir à la résolution par défaut de l'écran ?
Créé le 31/01/2005[haut]
auteurs : Nono40, Ricky81
Si dans votre application vous changez la résolution de l'écran, il est possible de revenir à celle par défaut (celle utilisée au démarrage de Windows). Pour cela utilisez la méthode suivante :

ChangeDisplaySettingsA(0, 0);
lien : faq Comment obtenir la résolution de l'écran ?
lien : faq Comment changer la résolution de l'écran ?

Comment lancer l'écran de veille défini par défaut ?
Créé le 01/09/2004[haut]
auteur : Ricky81
Pour cela, il vous faut utiliser la fonction SendMessage (qui permet d'envoyer un message à une fenêtre donnée) comme ci-dessous :

SendMessage(Application->Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 1);
lien : faq Comment mettre en veille le moniteur ?
lien : faq Comment empêcher l'exécution de l'écran de veille et la mise en veille ?

Comment mettre en veille le moniteur ?
Créé le 01/09/2004[haut]
auteur : Geronimo
Pour cela, il vous faut utiliser la fonction SendMessage (qui permet d'envoyer un message à une fenêtre donnée) comme ci-dessous :

SendMessage(Application->Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);
lien : faq Comment lancer l'écran de veille défini par défaut ?
lien : faq Comment empêcher l'exécution de l'écran de veille et la mise en veille ?

Comment empêcher l'exécution de l'écran de veille et la mise en veille ?
Créé le 31/01/2005[haut]
auteurs : Gysmo, Ricky81
Dans certains cas, il est pratique qu'au lancement du programme celui-ci désactive l'écran de veille ainsi que la mise en veille du moniteur.
Pour cela, nous allons utiliser l'API SystemParametersInfo :

SystemParametersInfo(unsigned int uiAction, 
unsigned int uiParam, 
void * pvParam, 
unsigned int fWinIni)
Voici un exemple d'utilisation pour suspendre l'écran de veille et la mise en veille du moniteur durant l'exécution d'un programme (void * Param; est un membre privé de la fiche) :

//---------------------------------------------------------------------------
// Au lancement de l'application on modifie les valeurs d'attente
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   // si l'écran de veille est actif
   if(!SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0, NULL, SPIF_UPDATEINIFILE))
   {
      SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, NULL, SPIF_UPDATEINIFILE);
   }

   // On récupère le temps d'attente avant la mise en veille

   SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT, 0, &Param, SPIF_UPDATEINIFILE);
   ShowMessage(IntToStr(Param));
   if(Param > 0)
   {
      // on désactive la mise en veille
      SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, 0, NULL, SPIF_UPDATEINIFILE);
   }
}
//---------------------------------------------------------------------------
// A la fermeture de l'application on rétablit les valeurs
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
   if(!SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 1, NULL, SPIF_UPDATEINIFILE))
   {
       SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, NULL, SPIF_UPDATEINIFILE);
   }

   if(Param > 0)
   {
      SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, (int) Param, NULL, SPIF_UPDATEINIFILE);
   }
}
//---------------------------------------------------------------------------
lien : faq Comment lancer l'écran de veille défini par défaut ?
lien : faq Comment mettre en veille le moniteur ?

Comment obtenir des informations sur les polices du système ?
Créé le 31/01/2005[haut]
auteurs : Pierre Castelain, Ricky81
Récupérer les informations concernant les polices utilisées dans une application C++ Builder est évident : Il suffit de consulter les attributs des propriétés de type TFont. Par contre, nous n'avons pas accès à toutes les polices. Par exemple la police utilisée pour la barre de titre n'est pas disponible directement. Il nous faut donc utiliser une fonction de l'API Windows : SystemParametersInfo
Voici un exemple d'utilisation de cette fonction. Le code suivant récupère juste le nom de la police de la barre de titre, mais vous pouvez le modifier facilement en utilisant les variables de metrics.lfCaptionFont

AnsiString GetTitleBarFontName()
{
   NONCLIENTMETRICS metrics;
   metrics.cbSize = sizeof(metrics);
   AnsiString result = "Aucune Font trouvée";
   if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(metrics), &metrics, 0))
   {
      result = metrics.lfCaptionFont.lfFaceName;
   }
   return result;
}
lien : faq Comment détecter la taille de la police d'affichage de Windows ?

Comment détecter la taille de la police d'affichage de Windows ?
Créé le 31/01/2005[haut]
auteurs : Pierre Castelain, Ricky81
Si vous désirez réaliser une interface graphique qui soit utilisable sur tous les systèmes de vos utilisateurs, vous allez peut-être vouloir connaître la taille de la police d'affichage afin d'adapter votre interface en fonction. Ce paramètre, qui peut être modifié par le panneau de configuration de l'affichage, a un impact non négligeable sur l'aspect des fenêtres réalisées avec C++ Builder. En effet, les fenêtres héritant de TForm utilisent cette taille comme taille par défaut de leur propre police. Pour obtenir cette information, un simple appel à la fonction GetDeviceCaps suffit.
La fonction d'exemple suivante vous retourne directement la taille de la police. Les valeurs principales sont :

  • 96 pour une petite police
  • 120 pour une grande police
  • et n'importe quelle autre valeur si l'utilisateur l'a spécifiée (relativement rare)

int GetSystemFontSize()
{
   HDC dc = GetDC(0);
   int result = GetDeviceCaps(dc, LOGPIXELSX);
   ReleaseDC(0, dc);
   return result;
}
lien : faq Comment obtenir des informations sur les polices du système ?


Consultez les autres F.A.Q.


Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.