IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Windows: comment récupérer le coefficient d'affichage de texte sur écran [Langage/Algorithme]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Par défaut Windows: comment récupérer le coefficient d'affichage de texte sur écran
    Bonjour,
    J’ai une appli Windows créée sous C++ Builder. Son fonctionnement est correct; une fois que l’appli est lancée :
    1. On peut cliquer sur le menu en haut à droite le symbole « - » (figure ci-dessous), mon appli se réduit vers le bas à gaude de l’écran, elle se réduit mais toujours visible.
    2. Je peux la réafficher en cliquant que le « carré ».

    Nom : 9999.jpg
Affichages : 419
Taille : 3,2 Ko

    Cependant, il y a un problème: si on met le coefficient d’affichage de texte = 125% ou 150% (sur écran Win10, bouton droite : Paramètres d’affichage -> Mise à l’échelle et disposition), l’étape 2 ci-dessus ne peut pas être faite car mon appli se situe en dehors de la zone d’affichage à cause du coefficient > 100%. Voici ma question :
    - Comment capturer le coefficient d’affichage de texte sous C++Builder afin de corriger la position de mon appli si ce coefficient n'est pas 100%
    - S’il est impossible de capturer ce coefficient, comment mettre une appli toujour visible si elle en mode de taille minimisée
    Merci d'avance
    Xavier

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    salut
    Le changement de % procoque un changement du DPI
    la vcl a intégré les évents OnAfterMonitorDpiChanged et OnBeforeMonitorDpiChanged

    le petit code ci-dessous que les dimensions de l'écran ainsi que la taille des texte sont affectées lors du changement de pourcentage


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Main.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm128 *Form128;
    //---------------------------------------------------------------------------
    __fastcall TForm128::TForm128(TComponent* Owner)
    	: TForm(Owner)
    {
    	DisplayInfo();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm128::DisplayInfo()
    {
      ListBox1->Items->AddPair(L"Height",IntToStr(this->Height));
      ListBox1->Items->AddPair(L"Widhtt",IntToStr(this->Width));
      ListBox1->Items->AddPair(L"ClientHeight",IntToStr(this->ClientHeight));
      ListBox1->Items->AddPair(L"ClientWidht",IntToStr(this->ClientWidth));
     
    }
    void __fastcall TForm128::FormAfterMonitorDpiChanged(TObject *Sender, int OldDPI,
    		  int NewDPI)
    {
    	UnicodeString Tmp;
    	Tmp.sprintf(L"CallingFormDpiChanged %s%d%s%d",L"OldDpi:",OldDPI,L" NewDpi:",NewDPI);
    	ListBox1->Items->Add(Tmp);
    	DisplayInfo();
    }
    //---------------------------------------------------------------------------
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre éclairé
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Par défaut
    Merci beaucoup pour cette nouvelle fonction très utile!
    Avec ces deux Dpis, je peux déduire le coefficient d'affichage et corriger éventuellement des positions de certains composants!
    Bon week end
    Xavier

  4. #4
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    salut,
    La gestion du DPI a été introduite assez récemment par embarcadero.je crois que MS a implémenté ces fonctionnalités depuis Windows10
    Si tu essayé mon code d'exemple tu constatera que la corrige automatiquement la taille le de la fenêtre et des différents taille de fonte des composants sur ta fiche
    En principe il n'y a rien à changer sur les composants de ta Form , mise à jour automatique
    le choix du pourcentage est fixe sous w10. 1,1.25,1.5,2.2.5 ce choix dépend de la résolution de ton écran exemple

    Nom : Capture d’écran 2021-03-26 à 20.08.23.png
Affichages : 352
Taille : 320,4 Ko


    pour plus dinformations https://docs.microsoft.com/fr-fr/win...p-applications

    Pour La VCL un peu de lecture :http://docwiki.embarcadero.com/RADSt...ées_(High_DPI)




    Cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  5. #5
    Membre éclairé
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Par défaut
    Merci,
    Effectivement, les positions de tous les composants sont automatiques!
    Il me reste juste d'essayer d'optimiser une carte que j'ai tracé par pixels dans un bitmap.
    Le problème que j'ai posé au début concerne un problème sous appli compilée par C++Builder2010, maintenant, il est bien corrigé automatiquement sous Sydney10.4.
    A+
    Xavier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/11/2014, 22h38
  2. Réponses: 2
    Dernier message: 16/02/2009, 01h34
  3. Comment récupérer le contenu de plusieurs fichiers textes ?
    Par calimero2611 dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2006, 15h45
  4. Réponses: 13
    Dernier message: 12/12/2005, 13h58
  5. Réponses: 7
    Dernier message: 15/09/2005, 06h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo