Windows 95 и Windows NT 4 позволяют пользователям переоткрывать файлы, выбирая опцию Documents в меню над кнопкой Start панели задач. Например, если Вы открываете документ в Microsoft Word, имя файла добавляется в недавно открытый список документов, так что Вы можете получить доступ к файлу из панели задач. Чтобы добавить документ в список недавно открытых файлов, используйте API-функцию SHAddToRecentDocs . Вот пример:
#include <shlobj.h> ... SHAddToRecentDocs(SHARD_PATH, "c:\\cbuilder\\readme.hlp");
Внимание: первый параметр SHAddToRecentDocs должен быть или SHARD_PATH или SHARD_PIDL. Если Вы хотите передать имя файла как строку, используйте значение SHARD_PATH. SHARD_PIDL позволяет Вам передать указатель на ITEMIDLIST (структура ITEMIDLIST касается программирования оболочки с функциями namespace оболочки; SHGetDesktopFolder, SHGetMalloc и др).
Внимание: Вы можете очистить все пункты в списке недавно открытых файлов, передавая NULL как во втором примере:
// Очистить список недавно открытых файлов SHAddToRecentDocs(SHARD_PATH, NULL);
Внимание: При испытании кода , я узнал, что оболочка не будет позволять Вам добавлять файл к недавно открытым файлам, если этот файл не имеет связанной программы. Например, я пробовал добавить файл UNIT1. ~ H в список. Так как файлы с ~H расширением не имеют зарегистрированной программы, которая открывает их, оболочка отказалась помещать UNIT1. ~ H в список. Это имеет смысл. Когда Вы выбираете файл, Windows открывает этот файл связанным с ним средством просмотра. Нельзя открыть файл, который не имеет никакой связанной программы просмотра. Это поведение было засвидетельствовано на Windows NT 4.
Внимание: Есть проблема с shlobj.h и BCB 5/6. Если вы включаете shlobj.h в проект BCB5/6, вы можете получить следующие ошибки::
[C++ Error] shlobj.h(1762): E2238 Multiple declaration for 'FVSHOWINFO' [C++ Error] shlobj.h(1936): E2238 Multiple declaration for 'FOLDERSETTINGS' [C++ Error] shlobj.h(3717): E2238 Multiple declaration for 'DESKBANDINFO' [C++ Error] shlobj.h(4808): E2238 Multiple declaration for 'SHELLFLAGSTATE'
Вы можете устранить эти ошибки, добавив строку в заголовок вашего проекта
Unit1.cpp
#degine NO_WIN32_LEAN_AND_MEAN