Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Получение интерфейсов IShellView, IShellFolder и I


Автор: lexluther 3.6.2005, 20:08
Всем привет,

Подскажите пожалуйста, как я могу получить указатели на интерфейсы IShellView, IShellFolder и IShellBrowser. Проблема в том, что непонятно где взять REFIID и как правильно создать указатель LPVOID *ppvOut (где объявления классов?). Если можно то дайте пожалуйста пример кода, или ссылку на документацию по теме. Указатели я так понимаю можно получить из ActiveX Microsoft Web Browser (shdocvw.dll).

Заранее спасибо за любой ответ.

С Уважением,
Иванов Артем

Автор: Гость_прохожий 6.6.2005, 12:14
Цитата(lexluther @ 3.6.2005, 20:08)
где взять REFIID

в shlguid.h
Цитата(lexluther @ 3.6.2005, 20:08)
и как правильно создать указатель LPVOID *ppvOut

Самому создавать ничего не надо, это делает внутри себя шелл-объект, ты же вызываешь метод создания или QueryInterface, куда передаешь указатель на указатель на интерфейс, который хочешь получить.

Например,
Код
IShellFolder *pIShellDesktopFolder = NULL;
if (SUCCEEDED(SHGetDesktopFolder(&pIShellDesktopFolder)))
{
  IShellView *pIShellView = NULL;

  if (SUCCEEDED(pIShellDesktopFolder->CreateViewObject(NULL, IID_IShellView, (LPVOID *)&pIShellView)))
  {
    //... делаешь что тебе требуется с pIShellView

    pIShellView->Release();
  }

  pIShellDesktopFolder->Release();
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)