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 :

Comment centrer la fenêtre BrowseForFolder ? [FAQ]


Sujet :

C++Builder

  1. #1
    Invité
    Invité(e)
    Par défaut Comment centrer la fenêtre BrowseForFolder ?
    Bonjour,


    J'ai utilisé la fonction "BrowseForFolder" de l'API Windows (qui permet de choisir un dossier dans une fenetre de dialogue).

    Malheureusement le dialogue affiché n'est pas centré dans mon écran (il est un peu trop en bas à gauche).

    Comment faire pour centrer ce dialogue dans l'écran ?

    Je n'ai rien trouvé dans la FAQ à ce sujet, ni sur le site MSDN de Microsoft (il faut dire que je ne suis pas très anglophone...)


    Merci !

  2. #2
    Invité
    Invité(e)
    Par défaut Solution
    J'ai trouvé un élément de réponse sur un forum Delphi, en Anglais (avec Google).

    Il faut utiliser la fonction callBack de SHBrowseForFolder...

  3. #3
    Invité
    Invité(e)
    Par défaut Centrer le dialogue dans dans l'écran
    Si vous cherchez à centrer le dialogue de choix de dossier "BrowseForFolder" dans l'écran, vous pouvez vous inspirer de ce code :

    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
     
    #include "stdafx.h"
    #include <memory>
    #include <shlobj.h>
     
    // Prototype pour le .h &#58;
    static int __stdcall BrowseCallbackProc&#40;HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData&#41;;
     
     
    // Dans le fichier .cpp &#58;
    CBrowseForFolder&#58;&#58;CBrowseForFolder&#40;const HWND hParent,
                                       const LPITEMIDLIST pidl,
                                       const CString& strTitle&#41; &#123;
        BROWSEINFO browse;
        LPITEMIDLIST pItemReturn;
        BROWSEINFO browse;
     
        // Remplissage de la structure browse
        ZeroMemory&#40;&browse, sizeof&#40;TBrowseInfo&#41;&#41;;
        browse.hwndOwner = GetActiveWindow&#40;&#41;;  ;
        ...
        browse.lpfn = browseCallbackProc;//-----> voir fonction callback ci-dessous
        browse.lParam = &#40;long&#41;this;
        browse.iImage = 0;
     
        pItemReturn = SHBrowseForFolder&#40;&browse&#41;;
        if &#40;pItemReturn == NULL&#41; &#123;
          return;
        &#125;
        char szChemin&#91;MAX_PATH + 1&#93;;
        if &#40;SHGetPathFromIDList&#40;pItemReturn, szChemin&#41;&#41; &#123;
        ...
        &#125;
    &#125;// CBrowseForFolder
     
     
     
    int __stdcall CBrowseForFolder&#58;&#58;BrowseCallbackProc&#40;HWND hwnd,
                                                       UINT uMsg,
                                                       LPARAM lParam,
                                                       LPARAM lpData&#41; &#123;
      TRect rect;
     
      GetWindowRect&#40;hwnd, &rect&#41;;
      int nLargeur = rect.Right - rect.Left + 1;
      int nHauteur = rect.Bottom - rect.Top + 1;
     
      TPoint dialogPT;
      TRect wa = Screen->WorkAreaRect;
      dialogPT.x = &#40;wa.Width&#40;&#41; / 2&#41; - &#40;nLargeur / 2&#41;;
      dialogPT.y = &#40;wa.Height&#40;&#41; / 2&#41; - &#40;nHauteur / 2&#41;;
      MoveWindow&#40;hwnd, dialogPT.x, dialogPT.y, nLargeur,
                                               nHauteur, True&#41;;
      return 1;     
    &#125;// BrowseCallbackProc

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

Discussions similaires

  1. Comment centrer une fenêtre (derivée de JFrame) par rapport à l'ecran ?
    Par ngmsky dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 30/08/2011, 13h56
  2. Comment centrer une fenêtre sur l'écran?
    Par bygui dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 07/04/2006, 11h25
  3. Comment centrer un Texte dans un rectangle ...
    Par Djedjeridoo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2003, 22h56

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