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

API, COM et SDKs Delphi Discussion :

l'ecran en plein écran sans bordure en Delphi


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre actif
    Inscrit en
    Avril 2010
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 102
    Par défaut l'ecran en plein écran sans bordure en Delphi
    Salut

    - Comment retourner l'écran en plein écran sans bordure par Delphi ?

    - Comment contrôler la carte graphique par delphi ?

    Merci

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Powerdj Voir le message
    Salut

    - Comment retourner l'écran en plein écran sans bordure par Delphi ?

    - Comment contrôler la carte graphique par delphi ?

    Merci
    1) BorderStyle = bsNone, WindowState = wsMaximized

    2) mais encore ? TCanvas, GDI, GDI+, DirectDraw, DirectX, OpenGL ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre actif
    Inscrit en
    Avril 2010
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 102
    Par défaut Bordure de l’écran après le changement de la résolution par code Delphi
    Salut

    Je parle de l'écran et je ne veux pas dire la Form

    Merci

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Powerdj Voir le message
    Salut

    Je parle de l'écran et je ne veux pas dire la Form

    Merci
    quelles bordures ?!
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre actif
    Inscrit en
    Avril 2010
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 102
    Par défaut Plein écran (Sans bordure)
    Citation Envoyé par Paul TOTH Voir le message
    quelles bordures ?!
    Salut

    Après le changement de la résolution de l’écran par code Delphi ou manuellement l’écran il est possible de devenir au centre avec deux bandes noir de gauche et de droite, on peut mettre l’écran en plein écran manuellement comme suit :

    Propriété de bureau – Options graphiques – Ajustement de l’écran – Plein écran (Sans bordure)

    Mais je veux le code Delphi qui fait ça automatiquement

    Merci

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Tu as je suppose utilisé ChangeDisplaySettings comme dans Comment changer la résolution de l'écran ?

    Regarde dmDisplayFixedOutput en DMDFO_STRETCH : Scaling the Desktop Image
    Sous XP via DEVMODE de ChangeDisplaySettings
    Sous Seven via SetDisplayConfig

    Est-ce un écran standard de Windows ?
    ou un écran lié à ton driver de Carte Graphique ?
    Sous Seven, je n'ai pas du tout le menu dont tu indiques le chemin

    le plus proche serait "Panneau de configuration\Apparence et personnalisation\Affichage\Résolution*d’écran", après je ne sais où trouver ton menu

    Pense qu'entre écran LCD et CRT, il y a de grosses différentes

    Sur un CRT, on changeait assez facilement la résolution, à part, quelques réglages physiques du moniteur c'était assez basique

    Sur un LCD, il n'y a qu'une seule résolution naturelle,
    soit l'écran affiche une image plus petite,
    soit il fait une extrapolation de l'image vers sa résolution naturelle,
    souvent le résultat est médiocre avec des polices floues et un inconfort visuel

    Du coup, il est préférable que son application même pleine écran s'adapte à l'écran plutôt que l'inverse !
    C'est une façon de penser archaïque que de vouloir forcer une résolution !
    Il est préférable d'utiliser des grandes fontes ou de grandes icones pour des raisons d'accessibilité ou d'ergonomie

    Une politique encouragée par Windows sous RT que les applications s'adaptent auw résolutions très différentes mode tablette ou en mode PC et l'utilisation des images vectorielles et un layout adapté au fonctionnel applicatif.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre actif
    Inscrit en
    Avril 2010
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 102
    Par défaut tels que le code que je possède peut modifier la résolution de l'écran
    Salut

    J’ai un code Delphi qui peut modifier la résolution d’écran de toute valeur à la valeur 1024*768 pixels sous Windows XP et Seven, mais parfois après le changement le bureau il est possible de devenir au centre de l’écran avec deux bandes noir de gauche et de droite, nous pouvons modifier l’affichage de bureau en plein écran manuellement comme suit selon la carte graphique installée sur chaque ordinateur :

    Clique droite avec la souris sur le bureau – Options graphiques – Ajustement de l’écran – Cocher ‘Plein écran (Sans bordure)’

    Mais je veux le code Delphi qui fait ça automatiquement tels que le code que je possède peut modifier la résolution de l'écran

    Merci

  8. #8
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    As-tu as essayé le paramètre dmDisplayFixedOutput en DMDFO_STRETCH de ton DEVMODE passé au ChangeDisplaySettings ?

    Je trouve que les valeurs sont très similaires entre ce menu (uniquement sous XP *) et le paramètre dmDisplayFixedOutput, on pourait les associer ainsi ?

    Conserver les Proportions . . . : DMDFO_DEFAULT . . - The display's default setting.
    Centrer le bureau . . . . . . . . : DMDFO_CENTER . . . - The low-resolution image is centered in the larger screen space.
    Plein Ecran (Sans Bordure) . . : DMDFO_STRETCH . . - The low-resolution image is stretched to fill the larger screen space.
    (*) Pense que nous n'avons pas forcément le même environnement !
    Lorsque tu donnes un chemin de menu, pense à :
    - indiquer la version de l'OS : XP, Vista, Seven
    - trouver les équivalents dans différentes versions
    - à fournir un petit lien vers l'aide microsoft sur ce menu
    - ...

    Pense aussi à fournir le code que tu utilises, tu nous fait un blabla dans un français approximatif qui n'est pas franchement utile, surtout si tu répètes deux fois la même chose
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Membre actif
    Inscrit en
    Avril 2010
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 102
    Par défaut
    S'il n'y a pas d'inconvénient je veux le code si vous savez..Merci

  10. #10
    Membre actif
    Inscrit en
    Avril 2010
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 102
    Par défaut Le problème des bordures reste sous Windows 7
    Mes salutations

    Sous XP tout va bien mais le problème des bordures reste sous Windows 7 temps que changer la résolution à la valeur 1024 par 768 pixels, une solution SVP

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i       : Integer;
      DevMode : TDeviceMode;
    begin
      i:=0;
      {$IFOPT R+}
       {$DEFINE CKRANGE}
       {$R-} //range-checking of
      {$ENDIF}
      while EnumDisplaySettings(nil,i,DevMode) do begin
        with Devmode do
          ListBox1.Items.Add(Format('%dx%d %d Colors',[dmPelsWidth,dmPelsHeight,1 shl dmBitsperPel]));
        Inc(i);
      end;
      {$IFDEF CKRANGE}
       {$UNDEF CKRANGE}
       {$R+}  //range-checking on
      {$ENDIF}
    end;
    …
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      DevMode    : TDeviceMode;
      liRetValue : Longint;
    begin
      {$IFOPT R+}
       {$DEFINE CKRANGE}
       {$R-} //range-checking of
      {$ENDIF}
      if EnumDisplaySettings(nil,Listbox1.ItemIndex,Devmode) then
      liRetValue := ChangeDisplaySettings(DevMode,0);
     
      SendMessage(HWND_BROADCAST,
                  WM_DISPLAYCHANGE,
                  SPI_SETNONCLIENTMETRICS,
                  0);
     
      {$IFDEF CKRANGE}
       {$UNDEF CKRANGE}
       {$R+}  //range-checking on
      {$ENDIF}
     
      case liRetValue of
        DISP_CHANGE_SUCCESSFUL: ShowMessage('DISP_CHANGE_SUCCESSFUL: The settings change was successful.');
        DISP_CHANGE_RESTART   : ShowMessage('DISP_CHANGE_RESTART: The computer must be restarted in order for the graphics mode to work.');
        DISP_CHANGE_BADFLAGS  : ShowMessage('DISP_CHANGE_BADFLAGS: An invalid set of flags was passed in.');
        DISP_CHANGE_FAILED    : ShowMessage('DISP_CHANGE_FAILED: The display driver failed the specified graphics mode');
        DISP_CHANGE_BADMODE   : ShowMessage('DISP_CHANGE_BADMODE: The graphics mode is not supported');
        DISP_CHANGE_NOTUPDATED: ShowMessage('DISP_CHANGE_NOTUPDATED: Unable to write settings to the registry.');
      end;
    end;
    Comment Utiliser SetDisplayConfig en Delphi le code complète SVP?

    Merci

  11. #11
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Citation Envoyé par Powerdj Voir le message
    S'il n'y a pas d'inconvénient je veux le code si vous savez..Merci
    Mes propos sont théoriques suite à la lecture de l'aide de ChangeDisplaySettings
    je te laisse œuvrer pour trouver une solution à TON problème,
    j'ai aussi mes problèmes et du travail à faire pour lequel je suis payé !
    Si tu veux un devis, c'est 100€/h HT !

    Citation Envoyé par Powerdj Voir le message
    Comment Utiliser SetDisplayConfig en Delphi le code complète SVP?Merci
    J'ai fait une recherche pour TOI, je n'ai jamais été confronté à ce problème,
    je t'ai fourni le nom de différente API comme SetDisplayConfig,
    je te laisse lire la MSDN à ce sujet et à fouiller sur le net comme le sujet making calls to SetDisplayConfig and QueryDisplayConfig in User32.DLL
    Voir plus bas une copie du code

    Pense qu'il te faut un Delphi très récent pour avoir cette déclaration de SetDisplayConfig, en D7, tu devrais écrire la séquence LoadLibrary\GetProcAddress et prévoir un code de secours si la fonction n'existe pas

    Je note que tu n'as toujours pas essayé dmDisplayFixedOutput, du moins pas dans le code fourni !


    Code issu de StackOverflow
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    function getTopology : DISPLAYCONFIG_TOPOLOGY_ID ;
    var  NumPathArrayElements,
       NumModeInfoArrayElements : UINT32;
     
     
    var  PathArrayElements_Size,
       ModeInfoArrayElements_Size : UINT32;
     
    error :  Longint;
    paths :  PDISPLAYCONFIG_PATH_INFO_array;
    info  :  PDISPLAYCONFIG_MODE_INFO_array;
    begin
     
        NumModeInfoArrayElements := 0;
        Result := DISPLAYCONFIG_TOPOLOGY_EXTERNAL;
        inc(result);
     
        error := GetDisplayConfigBufferSizes(QDC_DATABASE_CURRENT,NumPathArrayElements,NumModeInfoArrayElements);
        case error of
            ERROR_SUCCESS :
            begin
     
                PathArrayElements_Size := sizeof(DISPLAYCONFIG_PATH_INFO) * NumPathArrayElements ;
                ModeInfoArrayElements_Size :=  sizeof(DISPLAYCONFIG_MODE_INFO) * NumModeInfoArrayElements;
     
                GetMem(paths,PathArrayElements_Size);
                try
                    GetMem(info,ModeInfoArrayElements_Size );
                    try
                        error := QueryDisplayConfig(QDC_DATABASE_CURRENT,NumPathArrayElements, paths,NumModeInfoArrayElements, info,result);
                        case error of
                            ERROR_SUCCESS :;
                        else
                            Result := DISPLAYCONFIG_TOPOLOGY_EXTERNAL;
                            inc(result);
                        end;
     
                    finally
                        FreeMem(info,ModeInfoArrayElements_Size );
                    end;
                finally
                    FreeMem(paths,PathArrayElements_Size);
                end;
            end;
        end;
     
     
    end;
     
     
     
    function setTopology ( top : DISPLAYCONFIG_TOPOLOGY_ID) : boolean;
    var flags : dword;
    begin
        result := false;
        flags := DecodeDISPLAYCONFIG_TOPOLOGY_ID_SDC(top);
        if flags <> 0 then
        begin
            result := SetDisplayConfig(0,nil,0,nil,SDC_APPLY or flags) = ERROR_SUCCESS;
        end;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  12. #12
    Membre actif
    Inscrit en
    Avril 2010
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 102
    Par défaut déclaration de SetDisplayConfig, en D7 !!
    pour avoir cette déclaration de SetDisplayConfig, en D7, tu devrais écrire la séquence LoadLibrary\GetProcAddress et prévoir un code de secours si la fonction n'existe pas

    Plus en détail si cela est autorisé

    Merci

  13. #13
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Pour le couple LoadLibrary\GetProcAddress voir Comment appeler une fonction dans une DLL ?

    Le problème c'est DISPLAYCONFIG_PATH_INFO, c'est près de 10 struct dans WinGDI.h et WinUser.h, disponible sous C++Builder XE3 mais pas semble-t-il dans Delphi XE3
    La traduction de ces headers C++ vers Delphi sera longue :

    Code c++ : 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
    typedef struct DISPLAYCONFIG_PATH_INFO
    {
        DISPLAYCONFIG_PATH_SOURCE_INFO  sourceInfo;
        DISPLAYCONFIG_PATH_TARGET_INFO  targetInfo;
        UINT32                          flags;
    } DISPLAYCONFIG_PATH_INFO;
     
    typedef struct DISPLAYCONFIG_PATH_SOURCE_INFO
    {
        LUID    adapterId;
        UINT32  id;
        UINT32  modeInfoIdx;
        UINT32  statusFlags;
    } DISPLAYCONFIG_PATH_SOURCE_INFO;
     
    typedef struct DISPLAYCONFIG_PATH_TARGET_INFO
    {
        LUID                                    adapterId;
        UINT32                                  id;
        UINT32                                  modeInfoIdx;
        DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY   outputTechnology;
        DISPLAYCONFIG_ROTATION                  rotation;
        DISPLAYCONFIG_SCALING                   scaling;
        DISPLAYCONFIG_RATIONAL                  refreshRate;
        DISPLAYCONFIG_SCANLINE_ORDERING         scanLineOrdering;
        BOOL                                    targetAvailable;
        UINT32                                  statusFlags;
    } DISPLAYCONFIG_PATH_TARGET_INFO;
     
    ... encore un tas de struct
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. [AC-2010] Ouvrir un formulaire sans qu'il soit en plein écran
    Par BAYRAL dans le forum IHM
    Réponses: 4
    Dernier message: 13/04/2014, 17h29
  2. [CS5] mode plein écran automatique et sans retour
    Par thp21 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 17/04/2012, 00h33
  3. Plein écran pour un fenêtre sans cadre
    Par f56bre dans le forum Qt
    Réponses: 2
    Dernier message: 25/03/2012, 14h22
  4. Réponses: 2
    Dernier message: 09/01/2010, 01h00
  5. [Kylix] Fiches sans bordure
    Par alex dans le forum EDI
    Réponses: 4
    Dernier message: 28/04/2002, 21h19

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