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 ! :)
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:
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 :
static int __stdcall BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
// Dans le fichier .cpp :
CBrowseForFolder::CBrowseForFolder(const HWND hParent,
const LPITEMIDLIST pidl,
const CString& strTitle) {
BROWSEINFO browse;
LPITEMIDLIST pItemReturn;
BROWSEINFO browse;
// Remplissage de la structure browse
ZeroMemory(&browse, sizeof(TBrowseInfo));
browse.hwndOwner = GetActiveWindow(); ;
...
browse.lpfn = browseCallbackProc;//-----> voir fonction callback ci-dessous
browse.lParam = (long)this;
browse.iImage = 0;
pItemReturn = SHBrowseForFolder(&browse);
if (pItemReturn == NULL) {
return;
}
char szChemin[MAX_PATH + 1];
if (SHGetPathFromIDList(pItemReturn, szChemin)) {
...
}
}// CBrowseForFolder
int __stdcall CBrowseForFolder::BrowseCallbackProc(HWND hwnd,
UINT uMsg,
LPARAM lParam,
LPARAM lpData) {
TRect rect;
GetWindowRect(hwnd, &rect);
int nLargeur = rect.Right - rect.Left + 1;
int nHauteur = rect.Bottom - rect.Top + 1;
TPoint dialogPT;
TRect wa = Screen->WorkAreaRect;
dialogPT.x = (wa.Width() / 2) - (nLargeur / 2);
dialogPT.y = (wa.Height() / 2) - (nHauteur / 2);
MoveWindow(hwnd, dialogPT.x, dialogPT.y, nLargeur,
nHauteur, True);
return 1;
}// BrowseCallbackProc |