Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Ubicar un dialogo usando "SelectDirectory"

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Tips & Tricks
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Ubicar un dialogo usando "SelectDirectory" Responder citando

Hola;

Para centrar un cuadro de dialogo mostrado al llamar la funcion SelectDirectory puedes mirar el siguiente codigo, yo tambien tenia esta duda, tambien lo pregunte si te fijas en las preguntas de este foro hace muy poco, pues bien aqui vamos, esto fue lo que consegui:

Nota: incluye antes de empezar #include <shlobj.h> ok...

Código:


int __stdcall BrowseProc(HWND hwnd,UINT uMsg, LPARAM lParam, LPARAM lpData )
{
    char szDir[MAX_PATH];

    switch(uMsg)
    {
        case BFFM_INITIALIZED:
            SendMessage(hwnd, BFFM_SETSTATUSTEXT,0,     
                                (LPARAM)"Seleccione lo que quiera:");
           
 //Omite el envio de este mensage si no quieres  arrancar el dialogo con 
//una carpeta en particular para este caso c:\Windows
           SendMessage(hwnd, BFFM_SETSELECTION, TRUE,
                                (LPARAM)"C:\\Windows");
//Aqui lo ubicas en donde quieras usando:
           SetWindowsPos(hwnd,HWND_TOP,250,100,430,300,true);
              break;
        case BFFM_SELCHANGED:
            if(SHGetPathFromIDList((LPITEMIDLIST)lParam, szDir))
                Form1->Label3->Caption = szDir;
            break;
    }
    return 0;
}


void __fastcall TForm1::Button1Click(TObject *Sender)
{
    BROWSEINFO    info;
    char          szDir[MAX_PATH];
    char          szDisplayName[MAX_PATH];
    LPITEMIDLIST  pidl;
    LPMALLOC      pShellMalloc;

    if(SHGetMalloc(&pShellMalloc) == NO_ERROR)
    {
        memset(&info, 0x00, sizeof(info));
        info.hwndOwner = 0;
        info.pidlRoot  = NULL;
        info.pszDisplayName = szDisplayName;
        info.lpszTitle = "Buscar";
        info.ulFlags   = BIF_RETURNONLYFSDIRS|BIF_STATUSTEXT;
        info.lpfn      = BrowseProc;             // callback funcion
        pidl = SHBrowseForFolder(&info);

        if(pidl)
        {
            if(SHGetPathFromIDList(pidl, szDir))
            {
                Label1->Caption = szDir;
            }

            Label2->Caption = info.pszDisplayName;

            pShellMalloc->Free(pidl);
            pShellMalloc->Release();
        }
    }
}



Espero que esto les sirva,

Estaremos en contacto,

Saludos...

John Albb.
Volver arriba
Mensaje    Asunto: Responder citando

Una de las funciones que utilizas está mal escrita, SetWindowsPos debería ser SetWindowPos Wink


Casi me vuelvo tonto buscando el fallo que me daba... no acostumbro a usar esa función.
_________________
Entonces el bibliotecario miró a los libros enfurecido y les gritó ¡¡ OOOK !!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.