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

VB 6 et antérieur Discussion :

[VB6 - débutant] Résolution d'écran


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 55
    Par défaut [VB6 - débutant] Résolution d'écran
    Bonjour à tous,


    On en touche un mot dans la FAQ mais je ne trouve pas exactement ce que je cherche ou alors je ne comprends pas tout (ce qui sera certainement plus exact ).

    Voilà le problème :

    Je suis occupé sur un petit programme que j'écris via le PC de bureau, résolution d'écran de 1280*1024. J'arrive à avoir l'interface qui me convient mais lorsque j'essaie ce programme sur le portable - résolution d'écran 1440*900 - ça ne donne plus grand chose.

    Les contrôles (boutons, labels, zones de texte et autres comboboxs) se mettent un peu comme ils veulent, l'interface créée avec amour ressemble à une zone de guerre.

    Si une âme charitable pouvait me donner le coup de pouce nécessaire ce serait vraiment sympa.

    Un grand merci anticipatif et très bonne journée à tous

    Philippe

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 136
    Par défaut
    Utilise la même résolution d'écran pour tes 2 ordinateurs et tout devrait bien aller par la suite.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Janvier 2004
    Messages : 48
    Par défaut
    Tu peux a l'ouverture du programme verifier la résolution de l'écran, et si elle n'est pas celle attendue, afficher un msgbox qui demande l'autorisation a l'utilisateur de changer la résolution.

    Pour sa cré un module où tu met

    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
    34
    35
    36
    37
    38
    39
    40
     
    Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" _
       (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
     
    Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" _
       (lpDevMode As Any, ByVal dwflags As Long) As Long
     
    Private Const CCHDEVICENAME = 32
    Private Const CCHFORMNAME = 32
    Private Const DM_WIDTH = &H80000
    Private Const DM_HEIGHT = &H100000
     
    Private Type DEVMODE
        dmDeviceName As String * CCHDEVICENAME
        dmSpecVersion As Integer
        dmDriverVersion As Integer
        dmSize As Integer
        dmDriverExtra As Integer
        dmFields As Long
         dmOrientation As Integer
        dmPaperSize As Integer
        dmPaperLength As Integer
        dmPaperWidth As Integer
        dmScale As Integer
        dmCopies As Integer
        dmDefaultSource As Integer
        dmPrintQuality As Integer
        dmColor As Integer
        dmDuplex As Integer
        dmYResolution As Integer
        dmTTOption As Integer
        dmCollate As Integer
        dmFormName As String * CCHFORMNAME
        dmUnusedPadding As Integer
        dmBitsPerPel As Integer
        dmPelsWidth As Long
        dmPelsHeight As Long
        dmDisplayFlags As Long
        dmDisplayFrequency As Long
    End Type
    Ensuite tu met (toujour dans le module) la fonction suivante

    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
     
    Public Sub ResolutionEcran(sgWidth As Long, sgHeight As Long)
     
    Dim blTMP As Boolean, lgTMP As Long, dmEcran As DEVMODE, res As Long
     
    lgTMP = 0
    Do
        blTMP = EnumDisplaySettings(0, lgTMP, dmEcran)
        lgTMP = lgTMP + 1
    Loop While blTMP <> 0
     
    dmEcran.dmFields = DM_WIDTH Or DM_HEIGHT
    dmEcran.dmPelsWidth = sgWidth
    dmEcran.dmPelsHeight = sgHeight
    lgTMP = ChangeDisplaySettings(dmEcran, 0)
     
    End Sub
    Maintenant dans l'événement load de ton form tu peu metre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    X = Screen.Width / Screen.TwipsPerPixelX 'donne la largeur de ta résolution
    Y = Screen.Height / Screen.TwipsPerPixelY 'donne la longeur de ta résolution
     
    If X <> 1280 and Y <> 1024 then 'si la résolution n'est pas 1280x1024
    If MsgBox("Ce programme n'est pas optimisé pour votre résolution, Cliquez sur "ok" pour la changer en 1280x124", vbYesNo, "Erreur résolution") = vbYes Then ResolutionEcran 1280, 1024
    'Demander de changer la réso en 1280x 1024 a l'aide de la fonction ResolutionEcran 
    end if
    Voila a la sorti de ton programme n'oublie pas de remetre la résolution initial (que tu devra stocker dans des variables) .

    Mais bon pour moi ce n'est pas une bonne solution voici quelque solution plus valable:

    - Etudie les façons de réorganiser ta form suivant la taille
    - Met tes controles dans une frame ou un picturebox et centre celui-ci sur la form (pour les résolutions plus éléver que celle prévue)

    J'espere t'avoir aidé ou au moins t'avoir apris quelque chose

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    La "chose" n'est hélàs pas si simple :

    Trop de choses différentes entraînent des traitements différents (image éventuelle du fond, polices utilisées, traitement des contrôles images, des pictureboxes, etc...

    Il ne s'agit malheureusement pas d'un simple redimensionnement de la forme, de ses différents contrôles et de l'application d'un coefficient correcteur aux polices utilisées...

    C'est la raison pour laquelle les OCX à insérer (ils sont commercialisés) pour faire ce travail sont tous payants.

    J'ai déjà eu l'occasion, dans un autre sujet, d'expliquer le mécanisme à mettre en oeuvre pour modifier temporairement la résolution de l'écran client tout en prévoyant une restitution des paramètres originaux en cas d'interruption brutale et de redémarrage de la machine....

    Bon...
    Je n'ai encore pris aucune décision finale à ce propos, mais il n'est pas impossible que je décide d'offrir à DVP, en renonçant par écrit à tous les droits ... un ocx qui fait celà. On l'insère sur la Form de démarrage et le travail se limite alors à 2 mots de code au load de chaque Form.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 55
    Par défaut
    Et bé .....


    Merci à Motrin : En effet, pourquoi faire compliqué quand il y a moyen de faire autrement. Petit problème, ce programme serait destiné à une personne qui n'est pas forcément copine avec les manipulations internes de la machine. Si je lui parle de résolution d'écran, elle va me regarder avec de gros yeux en forme de point d'interrogation.

    Merci à Comtention : Même si le message de Jmfmarques ne me laisse que peu d'espoir, je vais quand même essayer de mettre ta solution en oeuvre. Si ça ne marche pas, ton code aura au moins eu le mérite de me remettre quelques détails en tête (utilisation des types de variables et autres "msgbox") dont j'avais oublié le fonctionnement (l'âge sans doute )

    Merci à Jmfmarques : En effet, s'il existe quelque chose de plus simple à quoi servirait que "Ducro il se décarcasse" . A la lecture de plusieurs documentations sur le sujet, je me doutais bien que les choses ne seraient pas faciles surtout quand on a franchement perdu la main (halluciné de voir à quelle vitesse on peut oublier certaines choses ...).

    Pour tout expliquer, ce programme serait destiné à ma vétérinaire préférée qui gère son cabinet et ses clients avec Excel. Bien entendu, ça fonctionne mais j'ai eu l'occasion de mettre un oeil sur sa page de travail, un chat n'y retrouverait pas ses jeunes (pour un véto, ça fait désordre).

    Je suis occupé sur 3 fronts :

    - Lui faire quelque chose de plus convivial en Excel que je maîtrise relativement bien mais que je trouve tout à fait inadapté.

    - Lui pondre un programme en VB sur mesure. La structure du programme est sur papier et semble tourner mais je bute lamentablement sur ces "petits détails".

    - Lui faire une base de données Access (que je ne connais pas du tout). Grâce à la fameuse touche F1, j'ai quand même avancé, j'ai créé mes tables, quelques requêtes mais je cale sur les formulaires qui sont tout sauf clairs.

    Je vous remercie encore tous bien fort et vous souhaite une très bonne journée (un peu grise à Bruxelles pour le moment).

    Philippe

Discussions similaires

  1. Obtenir la résolution d'écran des utilisateurs ?
    Par piff62 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/04/2006, 00h47
  2. [Débutant] Supprimer l'écran de double boot windows 2k/XP
    Par Katyucha dans le forum Windows XP
    Réponses: 5
    Dernier message: 11/05/2005, 14h54
  3. Résolution d'écran
    Par Pierre Fauconnier dans le forum Windows
    Réponses: 3
    Dernier message: 25/01/2005, 08h07
  4. Comment connaître la résolution d'écran ?
    Par Frunz dans le forum Langage
    Réponses: 3
    Dernier message: 18/06/2004, 17h50
  5. Résolution d'écran
    Par titicurio dans le forum C++Builder
    Réponses: 8
    Dernier message: 10/10/2003, 17h40

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