Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   cuadro de dialogo (https://www.clubdelphi.com/foros/showthread.php?t=69474)

kenychy 20-08-2010 15:56:28

cuadro de dialogo
 
hello friends, necesito saber como crear , un cuadro de dialogo para seleccionar una carpeta , yo tengo entendido que se hace mediante la estrucctura BROWSEINFO y usando la funcion SHBrowseForFolder, ya se como hacerlo en delphi, pero necesito saber como hacerlo en c++.

escafandra 20-08-2010 20:29:22

En C++ Builder:

Código:

#include <FileCtrl.hpp>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  String Carpeta;
  SelectDirectory("Seleccione carpeta", "", Carpeta);
}

Saludos.

escafandra 22-08-2010 20:35:54

Si lo deseas sólo con la API (SHBrowseForFolder) y válido para compiladores diferentes al Builder, podemos hacer una implementación sencilla de dicha función:

Código:

BOOL SelectDirectory(HWND hWnd, const PCHAR Caption, PCHAR Directory)
{
  BROWSEINFO    BrowseInfo;
  LPITEMIDLIST  ItemIDList;
  LPMALLOC      ShellMalloc;

  ZeroMemory(&BrowseInfo, sizeof(BrowseInfo));
  if(SHGetMalloc(&ShellMalloc) == S_OK && ShellMalloc){
    BrowseInfo.hwndOwner = hWnd;
    BrowseInfo.pidlRoot = 0;
    BrowseInfo.pszDisplayName = Directory;
    BrowseInfo.lpszTitle = Caption;
    BrowseInfo.ulFlags = BIF_RETURNONLYFSDIRS;
    ItemIDList = SHBrowseForFolder(&BrowseInfo);
    if(ItemIDList){
      SHGetPathFromIDList(ItemIDList, Directory);
      ShellMalloc->Free(ItemIDList);
    }
  }
  return ItemIDList!=0;
}

Como ejemplo:
Código:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  // Asegúrate que la variable Carpeta tiene un tamaño igual o mayor que MAX_PATH
  char Carpeta[MAX_PATH];
  SelectDirectory(Handle, "Seleccione carpeta", Carpeta);
}


kenychy 23-08-2010 16:24:10

gracias men


La franja horaria es GMT +2. Ahora son las 20:09:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi