Системный реестр. Архитектура системного реестра, страница 2

// Создать ключ приложения.

RegCreateKeyEx( HKEY_CLASSES_ROOT, "MyDoc\\DefaultIcon", 0, "",

REG_OPTION_NON_VOLATILE,  KEY_ALL_ACCESS, ShKeyApp,   SdwDisposition  ) ;

Для установки значений в системном реестре используется функция RegSetValueEx Чтобы завершить регистрацию используемой по умолчанию пиктограммы для нового типа документа, эта пиктограмма должна быть задана в виде значения ключа, созданного для конкретного приложения, а имя приложения — в виде значения, используемого для расширения. В листинге 19.2 показано, каким образом функция RegSetValueEx используется для установления значений ключей.

Листинг 19.2 Установление значения ключа____________________________

RegSetValueEx(  hKeyExt,  // Дескриптор ключа.

NULL,       // Установить NULL  в качестве используемого по

// умолчанию значения.

О, REG_SZ, "MyApplication", 14 ) ;

RegSetValueEx( hKeyApp,  NULL,   0, REG_SZ,   "Mylcon.ico,0", 13 ) ;

В этом случае используемая по умолчанию пиктограмма будет появляться в проводнике для каждого нового документа типа MDC. В примере применения функции RegCreateKeyEx, приведенном в описательной части этой главы, показано, каким образом системный реестр можно использовать для связывания расширения имени файла с типом документа, а также как программируются команды командного процессора, применяемые к документу.

Структура системного реестра

В системных реестрах Windows 2000 и Windows 98 используется обобщенная древовидная структура. Это означает, что в приложениях, написанных для Windows 2000 и Windows 98, может вполне допускаться тот факт, что данные хранятся в общих местах в зависимости от конкретного типа. На рис. 19.2 показан верхний уровень системного реестра Windows.

В табл. 19.1 перечислены корневые ветви системного реестра, а также приведено их назначение и взаимосвязь с другими ветвями.

Приложение Windows должно использовать системный реестр для хранения в разделе HKEY_CLASSES_ROOT данных следующих классов:

Типы документов. Это различные типы документов, которыми манипулирует конкретное приложение.

Идентификатор класса OLE. Это класс OLE, который определяется конкретным приложением. В процессе установки данного приложения он должен быть зарегистрирован с помощью OLE.

Имена команд OLE. Это протокол OLE. Каждое имя команды описывает действие, которое может выполнить объект. Например, MPLAYER позволяет воспроизводить звуковой файл формата .WAV.

Протоколы командного процессора. Это действия, которые могут быть вызваны командным процессором. Возможные варианты выбора действий отображаются в контекстных меню, выводимых на экран при выполнении пользователем щелчка правой кнопкой мыши на пиктограмме документа.

Пиктограмма, которая показывается для отображения документа В этом случае дол жны быть предоставлены две пиктограммы — большая и малая. А использоватьс будет та из них, которой пользователь отдаст наибольшее предпочтение.