Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.02;
Скачать: CL | DM;

Вниз

Как отобразить CHM-справку?   Найти похожие ветки 

 
GRF ©   (2004-01-19 20:37) [0]

Подскажите пожалуйста как отобразить справку в формате CHM?
Прочитал где-то, что нужно подключить ActiveX-компонент HHOPEN.OCX, но у меня такого не наблюдается. Как быть?


 
Dred2k ©   (2004-01-19 21:26) [1]

Подключать нужно HHCtrl.OCX
Адаптаций API - масса. Вот одна из неплохих (под D7 немного подправишь) - http://www.torry.net/vcl/vcltools/help/ukhtmlhlp.zip


 
y-soft ©   (2004-01-19 21:42) [2]

Вообще-то hhctrl.ocx

Путь определяется так:

1. Проверяется значение в реестре CLSID\{adb880a6-d8ff-11cf-9377-00aa003b7a11}\InprocServer32

2. Проверяется, есть ли такой файл по указанному пути

Далее:

3. Попытка загрузить библиотеку
4. Если удачно, то получаются адрес функции HtmlHelpA (для ANSI-строк) или HtmlHelpW (для Unicode)

Но и этого еще недостаточно

5. Application.HelpFile присваивается значение файла CHM
6. Подключается свой обработчик Application.OnHelp, в котором вызовы WinHelp транслируются в вызовы HtmlHelp

Ну и последнее:

7. В файле CHM должны быть определены и скомпилированы идентификаторы HelpContext (обычно подключают к проекту справки определения констант Aliases.h и определения идентификаторов для этих констант Map.h), иначе о контекстной справке можно забыть...

В общем описать подробно требуется много времени и места...


 
y-soft ©   (2004-01-19 22:00) [3]

Дополнение

Вообще правилнее искать сначала ключ в реестре HKey_Classes_Root\Internet.HHCtrl, а уже потом прочитать в нем значение CLSID и далее п.1

Т.к. надеяться, что Microsoft не изменит когда-нибудь название файла илм CLSID не стоит :) К тому же существуют версии от альтернативных разработчиков...


 
Dred2k ©   (2004-01-19 22:12) [4]

> y-soft © (19.01.04 22:00) [3]

Возможно, но кто поручится за название ключа в реестре. Или даже всего пути?

При всем уважении, Вам не кажется, что подобный подход и паранойя - нечто очень близкое? ;)
LoadLibrary("HHCtrl.OCX") вполне достаточно. Иначе - Microsoft в урну.


 
Dred2k ©   (2004-01-19 22:13) [5]

... У сторонних разработчиков - свои модули и ключи в реестре.


 
y-soft ©   (2004-01-19 22:20) [6]

>Dred2k © (19.01.04 22:12) [4]

Это не паранойя, а прямое следствие идеологии Component Object Model - интерфейс по правилам ищется по ProgID, а не по наименованию файла или идентификатору класса (см. например как реализовывались версии DirectX). Делается это из-за ограничений в наследовании интерфейсов. Вполне реально можно столкнуться с тем, что в будущих/альтернативных версиях HtmlHelp справка перестанет отображаться...

Хотя в большинстве реализаций под Delphi и C делают примерно так, как Вы написали (правда по CLSID ищут) - не заботятся о будущей совместимости :(

А всего-то надо написать одну лишнюю строчку кода...


 
GRF ©   (2004-01-20 00:12) [7]

Всем большое спасибо. Буду разбираться.



Страницы: 1 вся ветка

Текущий архив: 2004.02.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
3-1957
Виталий
2004-01-09 15:52
2004.02.02
ApplyUpdates


14-2362
Nikolay M.
2004-01-05 21:31
2004.02.02
---|Ветка была без названия|---


14-2327
Uncle_Archi
2004-01-06 21:19
2004.02.02
Задачка


1-2090
Алексей
2004-01-20 10:37
2004.02.02
Как сделать копию файла?


14-2299
Calm
2004-01-11 18:02
2004.02.02
Как бы вы раскрутили свой проект в инете?