Форум: "Основная";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
ВнизКак отобразить 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c