[C++] OPENFILENAME & GetOpenFileName() voor dirs?

Pagina: 1
Acties:

  • TheDuke
  • Registratie: Juni 1999
  • Niet online
Lo,

In windows / C++ kun je mooi zo'n common dialog oproepen met GetOpenFileName() met een bijbehorend OPENFILENAME struct dat je kunt vullen... Maar ik wil de gebruiker een directory laten selecteren en geen file. Ik kan bij de flags van OPENFILENAME.Flags weinig nuttigs vinden om de common dialog zo aan te passen.

Is er iets anders (zonder zelf een dialog te schrijven) ?

Ik laat nu gewoon een file in de directory selecteren en dan parse ik de buffer dat ie de file eruit tost, maar dat is toch wat eromheen hacken en niet gebruiksvriendelijk.

  • MisterE
  • Registratie: April 2002
  • Laatst online: 28-08 19:15
wel, het is delphi code, maar maakt gebruik van de winAPI:
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
procedure TForm1.btnBrowseDirClick(Sender: TObject);

var
  Infos: TBrowseInfo;
  ListID: pItemIDList;
  Buffer: PChar;
begin
  Buffer := StrAlloc(MAXWORD);
  with Infos do
  begin
    hwndOwner := Handle;
    pidlRoot := nil;
    pszDisplayName := Buffer;
    lpszTitle := 'Please select a folder:';
    ulFlags := BIF_RETURNONLYFSDIRS; //or BIF_BROWSEINCLUDEFILES;
    lpfn := nil;
    lParam := 0;
    ListID := SHBrowseForFolder(Infos);
  end;

  if ListID <> nil then
  begin
    SHGetPathFromIDList(ListID, Buffer);
    edDownloadFolder.Text := Buffer;
  end;
  StrDispose(Buffer);
end;

<font color="#e00000">.modbreak: ik heb even wat [code]..[/code] tags om je code gezet :)</font>

Verwijderd

ik weet zo snel geen library voor zo"n dialoogje, behalve in dan in de Borland C++Builder (3), daar zit onder het tabje voor win3.1 objecten een dialoogje voor drive, dir en file...

het zelf maken is ook niet zo lastig...
als je een list neemt om ze te laten zien, de win-API"s FindFirst, FindNext en FindClose gebruikt om dirs mee te zoeken, moet het wel lukken...

edit:

nogal grof spelfoutje :)

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 12:47

johnwoo

3S-GTE

Op woensdag 24 juli 2002 15:18 schreef Jappie het volgende:
ik weet zo snel geen library voor zo"n dialoogje, behalve in dan in de Borland C++Builder (3), daar zit onder het tabje voor win3.1 objecten een dialoogje voor drive, dir en file...

het zelf maken is ook niet zo lastig...
als je een list neemt om ze te laten zien, de win-API"s FindFirst, FindNext en FindClose gebruikt om dirs mee te zoeken, moet het wel lukken...

edit:

nogal grof spelfoutje :)
Waarom zou je dat zelf gaan maken :?
De juiste oplossing (SHBrowseForFolder API) is allang gegeven door MisterE. Als je even je MSDN opent op SHBrowseForFolder krijg je alle info die je maar wilt :)

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1