Написать этот шаг меня побудило одно письмо. Его автор мне задал вопрос, как в C++ Builder использовать BROWSEINFO, если при присоединении заголовочного файла shlobj.h вылетает сообщение о множественном объявлении FVSHOWINFO и иже с ними.
Я, собственно, как человек в меру вежливый ;) ответил, но мне письмо его вернулось. То есть ответить никак нельзя. Так что я решил про это шаг написать.
Вообще функции WinAPI не очень часто конфликтуют с C++Builder'ом, но эти - да. Например, как обычно, присоединяем через #include этот файл <shlobj.h>. Никакого кода не пишем, пробуем скомпилировать. Ну и, как предполагалось, сообщение компилятора:
Что же против этого делать надо? В самом начале .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"
После этого пробуем откомпилировать. Как это ни странно :), все компилируется, правда, немного дольше, чем до этого.