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 |
Partager