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

WinDev Discussion :

Hautes résolutions et zoom des fenêtres


Sujet :

WinDev

  1. #1
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut Hautes résolutions et zoom des fenêtres
    Bonjour

    Je suis confronté comme beaucoup à la gestion des écrans avec une résolution élevée (exemple Surface pro 4 en 2736 x 1824)
    J'ai une application qui va être déployée sur un parc hétérogène dont les résolutions vont de 1024x768 à 2736x1824

    Mes écrans sont taillés pour pouvoir fonctionner sur du 1024x768
    Pour les fenêtres redimensionnables, les listes et autres, pas trop de problème même si le texte peut être très petit sur les hautes résolutions
    Par contre les écrans non redimensionnables (fiches produits, assitants, popups etc ...) sont forcément rikiki dans certaines résolutions
    Bref j'imagine que certains sont concernés aussi par ce problème

    Première solution :
    - Passer Windows en mode high-dpi en indiquant un % d'agrandissement dans les paramètres (infos ici)
    - Dans les fenêtres Windev, cocher "Agrandir la fenêtre et les champs"
    Avantage : c'est géré par Windows et il n'y a rien à faire
    Inconvénient : oblige à passer en mode high-dpi ce que tout le monde ne veut pas faire (icones énormes, barre de tâche énorme, impacte aussi les autres applications ...)

    Deuxième solution (depuis la version 21) :
    - Utiliser la propriété ..Zoom des fenêtres dans la code d'init des fenêtres (le mieux c'est de le mettre dans un modèle de fenêtre)
    - Dans les fenêtres Windev, cocher "Ne pas agrandir (mode compatible)"
    Avantage : chaque client peut avoir un % de zoom différent. Possibilité de ne pas le faire sur certaines fenêtre ou d'avoir zoom différent
    Inconvénient : je ne sais pas encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Agrandissement à 150%
    MaFenêtre..Zoom = 150
    A noter que je désactiver la FAA de zoom au niveau du projet pour qu'on ne puisse pas le modifier avec Ctrl-roulette (bien que ça puisse convenir à certains)

    Pour l'instant j'ai fait quelques tests avec ..Zoom sur quelques fenêtres et ça semble pas mal. Il y a encore quelques petits bugs mais c'est pas mal du tout
    Bugs constatés pour l'instant : le contenu des combo-tables n'est pas agrandi (incident en cours au ST) et les images sont un peu détériorées (pas trop gênant dans mon cas)

    Avez-vous testé une de ces deux solutions sur des écrans haute résolution ?
    Si c'est le cas, j'aimerais bien avoir vos retours la dessus et surtout savoir si vous avez rencontré des bugs rédhibitoires

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 486
    Points : 875
    Points
    875
    Par défaut
    La seule véritable solution c'est de créer des applications qui sont "DPI aware", pas simple, car il faut revoir tout le code.

    Voici la fonction que j'utilise dans mes applications C++, pour rendre mon code DPI compatible

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    long dpi(IN long nPix) {
        static float ratio;
        if (ratio == 0) {
            HDC hDC = GetDC(NULL); 
            ratio = (GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f);
            ReleaseDC(NULL, hDC);
        }
        return (long) (nPix * ratio);
    }

    Et voici sont utilisation avec des fenêtre Windows créées avec l'API bas niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Create ListView to select texture from.
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL | LVS_NOCOLUMNHEADER;
    HWND hCtrl = CreateWindowEx(0, WC_LISTVIEW, L"", dwStyle, dpi(ClientW - 127), dpi(216), dpi(120), dpi(120),  gP.hMain, (HMENU)IDC_LISTBOX, gP.hinstance, NULL);
    Il faut également s'assurer que çà fonctionne avec les fonctions d'encrage de WinDev.
    Sinon il faut se palucher la gestion du message WM_SIZE, pas simple en p-code WLangage (car normalement il faut gérer çà dans une DLL).

  3. #3
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Merci de ta réponse
    C'est toujours intéressant de savoir comment ce problème est traité
    Mais dans mon cas le but est bien évidemment de trouver une solution pour les applications existantes

  4. #4
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour,

    J'émet une réserve sur la première solution, tu peux te retrouver avec des problèmes de placement de champs dans les fenêtres.
    J'ai encore eu ce problème la semaine dernière sur un ordinateur portable paramétré en "Larger 150%"

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  5. #5
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    C'est ce qu'il me semblait aussi mais ça a l'air de mieux se passer avec les versions récentes de Windows (8 et 10)
    Je ferai d'autres tests

Discussions similaires

  1. [Toutes versions] Adapter le zoom des feuilles Excel à la résolution de l'écran
    Par Chagui dans le forum Contribuez
    Réponses: 8
    Dernier message: 03/12/2018, 20h02
  2. [WD20] Problème de mise en page des fenêtre avec le zoom windows
    Par lololebricoleur dans le forum WinDev
    Réponses: 1
    Dernier message: 23/09/2015, 22h19
  3. Gérer la taille des fenêtre et composants selon résolution écran.
    Par cotede2 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 10/11/2009, 15h41
  4. Générer des JPEG à haute résolution (300 dpi)
    Par Leishmaniose dans le forum Powerpoint
    Réponses: 5
    Dernier message: 20/06/2007, 17h32
  5. Afficher des bitmaps à haute vitesse dans une application fenêtrée
    Par acanicio dans le forum Développement 2D, 3D et Jeux
    Réponses: 9
    Dernier message: 27/10/2006, 22h35

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