На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Модераторы: Qraizer
  
> SHBrowseForFolder
    Есть процедура обработки нажатия кнопки для выбора папки:
    {
    CString SelFolder;
    LPITEMIDLIST lpIID;
    BROWSEINFO bi;
    TCHAR szName[255];

    ZeroMemory(&bi,sizeof(BROWSEINFO));
    TCHAR Dir[MAX_PATH];
    bi.hwndOwner = GetSafeHwnd();
    bi.ulFlags = BIF_RETURNONLYFSDIRS;
    bi.lpszTitle = "Выбор папки";
    bi.pszDisplayName = &Dir[0];
    lpIID = SHBrowseForFolder(&bi);
    if(lpIID)
    {
    VERIFY ( SHGetPathFromIDList (
    lpIID, szName ));
    SelFolder = szName;
    }
    }
    Все работает отлично, только как указать начальную папку в обзоре и развернуть ее?
    Подскажите, pls...
      У тебя в структуре BROWSEINFO есть pidlRoot. Его нужно заполнить. Примерно так:
      LPITEMIDLIST pidlRoot = NULL;
      LPSHELLFOLDER pDesktopFolder = NULL;
      SHGetDesktopFolder(&pDesktopFolder);
      if ( pDesktopFolder != NULL )
      {
      char szPath[MAX_PATH];
      OLECHAR olePath[MAX_PATH];
      ULONG chEaten;
      ULONG dwAttributes;
      HRESULT hr;
      GetCurrentDirectory(MAX_PATH, szPath);
      MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szPath, -1, olePath, MAX_PATH);

      // Convert the path to an ITEMIDLIST.
      hr = pDesktopFolder->ParseDisplayName(NULL,
      NULL,
      olePath,
      &chEaten,
      &pidlRoot,
      &dwAttributes);

      pDesktopFolder->Release();
      }

      Затем
      bi.pidlRoot = pidlRoot;
        http://www.sources.ru/NonCGI/Forum2/HTML/002445.html
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0157 ]   [ 16 queries used ]   [ Generated: 3.05.24, 19:46 GMT ]