Добавить файл в список недавно открытых файлов.


Ответ:

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


Copyright © 1997-2000 by Harold Howe. bcbdev.com
All rights reserved.
Переведено для сайта http://cbuilder.ru