Главная страница
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.026 c
3-1988
Алексеюшка
2004-01-08 13:19
2004.02.02
Не сохраняются изменения на сервере


1-2089
Hogo
2004-01-20 08:23
2004.02.02
Как быстро скопировать или переместить много файлов.


3-1977
jocko
2004-01-08 13:50
2004.02.02
Соединение с сервером ADO


3-2026
dimablind
2004-01-09 22:51
2004.02.02
quickreport и число записей


4-2416
Les
2003-11-25 11:01
2004.02.02
Чтение файла шрифта