Обзор папок (SHBrowseForFolder)

Тема в разделе "WASM.WIN32", создана пользователем alterego, 10 окт 2005.

  1. alterego

    alterego New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2005
    Сообщения:
    44
    Адрес:
    Russia
    Использую диалоговое окно для выбора папок. Код такой


    Код (Text):
    1.  
    2.     BROWSEINFO bri;
    3.     LPITEMIDLIST lpidl;
    4.    
    5.     bri.hwndOwner = hwndParent;
    6.     bri.pidlRoot = 0;
    7.     bri.pszDisplayName = NULL;
    8.     bri.lpszTitle = "Select a folder";
    9.     bri.ulFlags = BIF_RETURNONLYFSDIRS | BIF_DONTGOBELOWDOMAIN;
    10.     bri.lpfn = 0;
    11.     bri.lParam = 0;
    12.     bri.iImage = 0;
    13.    
    14.     lpidl = SHBrowseForFolder(&bri);
    15.     if (!lpidl) return FALSE;
    16.    
    17.     SHGetPathFromIDList(lpidl, lpSourceFldName);
    18.     CoTaskMemFree((PVOID)lpidl);
    19.    
    20.     return TRUE;
    21.  




    Как сделать так, чтобы при открытии этого окна была выделена нужная мне папка?



    <font color="red]пользуемся тегом CODE</font><!--color-->
     
  2. krid24

    krid24 Member

    Публикаций:
    0
    Регистрация:
    17 авг 2004
    Сообщения:
    88
    Код (Text):
    1. static int CALLBACK BrowseCallbackProc (HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
    2. {
    3.     switch (uMsg) {
    4.     case BFFM_INITIALIZED:
    5.         if (lpData)
    6.         SendMessage(hWnd,BFFM_SETSELECTION,TRUE,lpData);
    7.         break;
    8.    }
    9.     return 0;
    10. }
    11.  
    12.  ...
    13.  
    14.     char lpSourceFldName[MAX_PATH];
    15.     char buf[]="C:\\WINDOWS\\SYSTEM32\\DRIVERS";
    16.  
    17.     BROWSEINFO bri;
    18.     LPITEMIDLIST lpidl;
    19.  
    20.     bri.hwndOwner = hwndParent;
    21.     bri.pidlRoot = 0;
    22.     bri.pszDisplayName = NULL;
    23.     bri.lpszTitle = "Select a folder";
    24.     bri.ulFlags = BIF_RETURNONLYFSDIRS | BIF_DONTGOBELOWDOMAIN;
    25.     bri.lpfn = BrowseCallbackProc;
    26.     bri.lParam = (LPARAM)buf;     //передаешь имя папки в callback-функцию
    27.     bri.iImage = 0;
    28.  
    29.     lpidl = SHBrowseForFolder(&bri);
    30.     if (!lpidl) return FALSE;
    31.  
    32.     SHGetPathFromIDList(lpidl, lpSourceFldName);
    33.     MessageBox(hwndParent,lpSourceFldName,"Select",0);
    34.     CoTaskMemFree((PVOID)lpidl);
    35.  
    36.     return TRUE;
    37.  
     
  3. SDragon

    SDragon New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2005
    Сообщения:
    133
    Адрес:
    Siberia
    Создать функцию BrowseCallbackProc (член lpfn структуры BROWSEINFO) и послать сообщение BFFM_SETSELECTION в ответ на BFFM_INITIALIZED.



    Добавлено: ох, опоздал, krid24 уже ответил :)