|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Browsing for Folders
The following example uses the SHBrowseForFolder function to prompt the user for a program group. The Programs directory is specified as the root.
// Main_OnBrowse - browses for a program folder. // hwnd - handle of the application's main window // // Uses the global variable g_pMalloc, which is assumed to point // to the shell's IMalloc interface. void Main_OnBrowse(HWND hwnd) { BROWSEINFO bi; LPSTR lpBuffer; LPITEMIDLIST pidlPrograms; // PIDL for Programs folder LPITEMIDLIST pidlBrowse; // PIDL selected by user // Allocate a buffer to receive browse information.
if ((lpBuffer = (LPSTR) g_pMalloc->lpVtbl->Alloc( g_pMalloc, MAX_PATH)) == NULL) return; // Get the PIDL for the Programs folder. if (!SUCCEEDED(SHGetSpecialFolderLocation( hwnd, CSIDL_PROGRAMS, &pidlPrograms))) { g_pMalloc->lpVtbl->Free(g_pMalloc, lpBuffer); return; } // Fill in the BROWSEINFO structure. bi.hwndOwner = hwnd; bi.pidlRoot = pidlPrograms; bi.pszDisplayName = lpBuffer;
bi.lpszTitle = "Choose a Program Group"; bi.ulFlags = 0; bi.lpfn = NULL; bi.lParam = 0; // Browse for a folder and return its PIDL. pidlBrowse = SHBrowseForFolder(&bi); if (pidlBrowse != NULL) { // Show the display name, title, and file system path. MessageBox(hwnd, lpBuffer, "Display name", MB_OK); if (SHGetPathFromIDList(pidlBrowse, lpBuffer)) SetWindowText(hwnd, lpBuffer); // Free the PIDL returned by SHBrowseForFolder.
g_pMalloc->lpVtbl->Free(g_pMalloc, pidlBrowse); } // Clean up. g_pMalloc->lpVtbl->Free(g_pMalloc, pidlPrograms); g_pMalloc->lpVtbl->Free(g_pMalloc, lpBuffer); }
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Просмотр для Папок
Следующий пример использует функцию SHBrowseForFolder, чтобы подсказывать потребителя для программной группы. Директорий Программ определен как корень.
// Main_OnBrowse - просмотры для программной папки. // hwnd - ручка прикладного основного окна // // Использует глобальную переменную g_pMalloc, которая принята, чтобы указывать // на интерфейс оболочки IMalloc. пустота Main_OnBrowse(HWND hwnd) { BROWSEINFO ДВУ; LPSTR lpBuffer; LPITEMIDLIST pidlPrograms; // PIDL ДЛЯ папки Программ LPITEMIDLIST pidlBrowse; // PIDL ВЫБИРАЛСЯ потребителем // Распределите буфер, чтобы получать информацию просмотра.
если возврат ((lpBuffer = (LPSTR) g_pMalloc->lpVtbl->Alloc( g_pMalloc, MAX_PATH)) == НЕДЕЙСТВИТЕЛЬНЫЙ); // Получите PIDL для папки Программ. если (!ПОЛУЧЕННОЕ(SHGetSpecialFolderLocation( hwnd, CSIDL_PROGRAMS, &pidlPrograms))) { g_pMalloc->lpVtbl->Free(g_pMalloc, lpBuffer); возврат; } // Заполните структуру BROWSEINFO. bi.hwndOwner = hwnd; bi.pidlRoot = pidlPrograms; bi.pszDisplayName = lpBuffer;
bi.lpszTitle = "Выбирает Программную Группу"; bi.ulFlags = 0; bi.lpfn = НЕДЕЙСТВИТЕЛЬНЫЙ; bi.lParam = 0; // Просмотр для папки и возвращает свое PIDL. pidlBrowse = SHBrowseForFolder(&bi); если (pidlBrowse != НЕДЕЙСТВИТЕЛЬНЫЙ) { // Покажите дисплейное имя, название, и файловый системный путь. MessageBox(hwnd, lpBuffer, "ДИСПЛЕЙНОЕ имя", MB_OK); если (SHGetPathFromIDList(pidlBrowse, lpBuffer)) SetWindowText(hwnd, lpBuffer); // Освободите PIDL возвращанное SHBrowseForFolder.
g_pMalloc->lpVtbl->Free(g_pMalloc, pidlBrowse); } // Наведите порядок. g_pMalloc->lpVtbl->Free(g_pMalloc, pidlPrograms); g_pMalloc->lpVtbl->Free(g_pMalloc, lpBuffer); }
|
|
|
|
| |