Шаг 38 - Про BROWSEINFO и <shlobj.h>

Написать этот шаг меня побудило одно письмо. Его автор мне задал вопрос, как в C++ Builder использовать BROWSEINFO, если при присоединении заголовочного файла shlobj.h вылетает сообщение о множественном объявлении FVSHOWINFO и иже с ними.

Я, собственно, как человек в меру вежливый ;) ответил, но мне письмо его вернулось. То есть ответить никак нельзя. Так что я решил про это шаг написать.

Вообще функции WinAPI не очень часто конфликтуют с C++Builder'ом, но эти - да. Например, как обычно, присоединяем через #include этот файл <shlobj.h>. Никакого кода не пишем, пробуем скомпилировать. Ну и, как предполагалось, сообщение компилятора:

gif/38_1.gif (2516 b)

Что же против этого делать надо? В самом начале .cpp файла, перед всеми #include, пишем директиву объявления макроса #define NO_WIN32_LEAN_AND_MEAN, вот так.

//---------------------------------------------------------------------------

#define NO_WIN32_LEAN_AND_MEAN
#include <vcl.h>
#include <shlobj.h>
#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
#pragma resource "*.dfm"

После этого пробуем откомпилировать. Как это ни странно :), все компилируется, правда, немного дольше, чем до этого.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Аванесов Самвел - 5.12.2001