На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

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);
}



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz