Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Не удается вывести нужную страницу помощи Добавлено: 20.08.04 17:35  

Автор вопроса:  П.С. | Web-сайт: psbatishev.narod.ru | ICQ: 225019134 
Проблема с помощью в программе, созданной на Visual Basic 6.0:
Указываю имя файла справки в свойствах проекта (например, help.chm), указываю в свойстве формы HelpContextID номер раздела справки (например, 10), но при нажатии F1 открывается всегда начальная страница справочной системы.

Файл справки создан в программе HelpWorkShop 1.1. Пробовал подключать "сторонние" файлы справок, но
тоже выдается только главная страница.

В чем тут дело? Помогите, пожалуйста, если не затруднит.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #1
Добавлено: 20.08.04 20:14
 По моему VB6 с HTML Help не работает. Попробуй использовать специальные API для него.

Ответить

Номер ответа: 2
Автор ответа:
 vb_lord



Вопросов: 7
Ответов: 45
 Профиль | | #2 Добавлено: 20.08.04 21:54
Привет. Мой ответ не по теме, но может заинтересуешся?
Что думаешь о создании хелпа в виде HTML(HTM)? Многим нравится, и программы никакие не нужны, и метод HelpContextID можно реализовать как угодно.

Удачи

Ответить

Номер ответа: 3
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #3 Добавлено: 20.08.04 23:23
А ты в своём файле справки создавал секции ALIAS и MAP ? Чтобы выбирать произвольный раздел справки, необходимо определить alias'ы тем. Без этого не получится. В файле .hhp должны быть такие вещи:
[ALIAS]
IDH_Тема_1=Название файла темы №1.htm
IDH_Тема_2=Название файла темы №2.htm

[MAP]
#Define IDH_Тема_1 1
#Define IDH_Тема_2 2

Ответить

Номер ответа: 4
Автор ответа:
 П.С.



ICQ: 225019134 

Вопросов: 36
Ответов: 41
 Web-сайт: psbatishev.narod.ru
 Профиль | | #4
Добавлено: 21.08.04 15:42
Спасибо, все сделал, как написано, скомпилировал заново файл справки, только возникла новая проблема,
как вывести справочный файл формата *.chm с нужной рубрикой? При нажатии F1 выполняется строка:
nRet = OSWinHelp(Me.hwnd, App.Path & "\" & App.HelpFile, 3, 0), но эта строка может выводить
только справку формата *.hlp (попробовал), а при *.chm ничего не происходит вообще.
Функция OSWinHelp была создана мастером создания приложений и описана так:
Private Declare Function OSWinHelp% Lib "user32" Alias "WinHelpA" (ByVal hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As Any)
Когда я попробовал описать эту функцию с помощью API Text Viewer, то получилось следующее:
Public Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal hwnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As Long) As Long
Но программа на эту строку вообще ругается.
До обращения на форум я использовал строку:
Shell "hh.exe help.chm", vbNormalFocus
Но нужный раздел справки она естественно не выведет.

Что можно сделать? Подскажите, пожалуйста.

Ответить

Номер ответа: 5
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #5
Добавлено: 21.08.04 17:14
 Вот нашёл у себя на винте. Кстати cresta отвечал кому то в теме "Как *chm-фаил(справку) вызывать в VB проект?".

Declare Function HtmlHelpLongArg Lib "hhctrl.ocx" _
          Alias "HtmlHelpA" (ByVal hwndCaller As Long, _
          ByVal pszFile As String, ByVal uCommand As Long, _
          ByVal dwData As Long) As Long

Public Const HH_HELP_CONTEXT = &HF


    On Error Resume Next
    ;Dim iRetCode As Long
    iRetCode = HtmlHelpLongArg(Me.hwnd, App.Path & "\Справка.chm", HH_HELP_CONTEXT, Me.ActiveControl.HelpContextID)

PS: На самом деле настоящее название внешней функции идёт после Alias, а то что в объявленни - это псевдоним. Псевдоним может быть какой хочешь.
 Например в этом случае настоящим именем будет Alias "HtmlHelpA", а псевдонимом HtmlHelpLongArg.
 Ты можешь объявить и так:
Declare Function ЛюбоеНовоеИмя Lib "hhctrl.ocx" Alias "HtmlHelpA" ...

Ответить

Номер ответа: 6
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #6 Добавлено: 21.08.04 18:40
В коде, что состряпал визард, замени
Private Declare Function OSWinHelp% Lib "user32" Alias "WinHelpA" (ByVal hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As Any)
на то, что написал CyRax.
И ещё: Me.ActiveControl.HelpContextID - это должно быть значение, которое ты определил в секции MAP, например для #Define IDH_Тема_1 должна быть цифра 1.

Ответить

Номер ответа: 7
Автор ответа:
 П.С.



ICQ: 225019134 

Вопросов: 36
Ответов: 41
 Web-сайт: psbatishev.narod.ru
 Профиль | | #7
Добавлено: 21.08.04 22:15
Спасибо огромное!

Я так и сделал. Все получилось. Еще написал код для определения либо активного элемента, либо активного окна (MDI-приложение) в случае отсутствия фокуса у элемента, а также номер раздела по умолчанию.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам