Открыть HTMLHelp топик по ID
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 28.04.03 09:23
Оценка:
Сделал для своей программы справку в HTMLHelp. Теперь собственно встал вопрос вызова этой справки.
Вот здесь у меня возникли неожиданные проблемы. Вообще говоря, .NET предлагает вызывать справку вот так:
        Help.ShowHelp(mainForm, g_HelpFilePath, HelpNavigator.Topic, "HTML/Introduction.htm")

Что мне здесь крайне не нравится — так это последний параметр, а именно то что нужно указывать точный путь в .chm-файле. Это довольно сильно привязывает программу к структуре справки.
Собственно вопрос: а нельзя ли как-то указывать нужный топик по ID — как это делалось в VB6, например?
... << RSDN@Home 1.0 beta 6a >>
Re: Открыть HTMLHelp топик по ID
От: MaxMP Россия  
Дата: 28.04.03 12:34
Оценка: 6 (1) -1
Здравствуйте, nzeemin, Вы писали:

N>Сделал для своей программы справку в HTMLHelp. Теперь собственно встал вопрос вызова этой справки.

N>Вот здесь у меня возникли неожиданные проблемы. Вообще говоря, .NET предлагает вызывать справку вот так:
N>
N>        Help.ShowHelp(mainForm, g_HelpFilePath, HelpNavigator.Topic, "HTML/Introduction.htm")
N>

N>Что мне здесь крайне не нравится — так это последний параметр, а именно то что нужно указывать точный путь в .chm-файле. Это довольно сильно привязывает программу к структуре справки.
N>Собственно вопрос: а нельзя ли как-то указывать нужный топик по ID — как это делалось в VB6, например?


public static void ShowHelp(
   Control parent,
   string url,
   HelpNavigator command,
   object param
);

Parameters
parent
A Control that identifies the parent of the Help dialog box.
url
The path and name of the Help file.
command
One of the HelpNavigator values.
param
The numeric id of the topic to display.

Re[2]: Открыть HTMLHelp топик по ID
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 28.04.03 12:46
Оценка:
Здравствуйте, MaxMP, Вы писали:

N>>Собственно вопрос: а нельзя ли как-то указывать нужный топик по ID — как это делалось в VB6, например?


MMP>

MMP>param
MMP>The numeric id of the topic to display.


Ага, щас! Доку я тоже читать умею.
Ты это пробовал вызывать? Если пробовал, то покажи код. Я пробовал, все прописал в chm как надо — и id и alias — пофиг ему до этого numeric id, путь в .chm-файле он там ждет. Короче, не катит.
... << RSDN@Home 1.0 beta 6a >>
Re[3]: Открыть HTMLHelp топик по ID
От: MaxMP Россия  
Дата: 28.04.03 17:04
Оценка:
MMP>

MMP>param
MMP>The numeric id of the topic to display.


N>Ага, щас! Доку я тоже читать умею.

N>Ты это пробовал вызывать? Если пробовал, то покажи код. Я пробовал, все прописал в chm как надо — и id и alias — пофиг ему до этого numeric id, путь в .chm-файле он там ждет. Короче, не катит.

Хорошо, куда послать пример?
Re[4]: Открыть HTMLHelp топик по ID
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 29.04.03 07:57
Оценка:
Здравствуйте, MaxMP, Вы писали:

MMP>>

MMP>>param
MMP>>The numeric id of the topic to display.


N>>Ага, щас! Доку я тоже читать умею.

N>>Ты это пробовал вызывать? Если пробовал, то покажи код. Я пробовал, все прописал в chm как надо — и id и alias — пофиг ему до этого numeric id, путь в .chm-файле он там ждет. Короче, не катит.

MMP>Хорошо, куда послать пример?


Дык сюда конечно — я наверное не один такой
Только самое необходимое — вызов то есть. И объясни как ты этот ID в хелпе прописываешь.
... << RSDN@Home 1.0 beta 6a >>
Re[5]: Открыть HTMLHelp топик по ID
От: MaxMP Россия  
Дата: 29.04.03 13:26
Оценка: 46 (6)
N>Дык сюда конечно — я наверное не один такой
N>Только самое необходимое — вызов то есть. И объясни как ты этот ID в хелпе прописываешь.

test.hhp
[OPTIONS]
Compatibility=1.1 or later
Compiled file=test.chm
Contents file=testToc.hhc
Default topic=index.html
Display compile progress=Yes
Language=0x409 English (United States)


[ALIAS]
ID_page1=page1.html
ID_page2=page2.html

[MAP]
#define ID_page1 1000
#define ID_page2 1001


testToc.hhc
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</HEAD><BODY>
<OBJECT type="text/site properties">
    <param name="ImageType" value="Folder">
</OBJECT>
<UL>
    <LI> <OBJECT type="text/sitemap">
        <param name="Name" value="Test">
        </OBJECT>
    <UL>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="Index">
            <param name="Local" value="index.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="Page 1">
            <param name="Local" value="page1.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="Page 2">
            <param name="Local" value="page2.html">
            </OBJECT>
    </UL>
</UL>
</BODY></HTML>


index.html, page1.html, page2.html
— с любым содержанием

help.cs
using System;
using System.Diagnostics;
using System.Windows.Forms;

public class TestForm : Form
{
    public TestForm()
    {
        Button button1 = new Button();
        button1.Text = "1";
        button1.Tag = 1000;
        button1.Click += new EventHandler(Button_Click);
        Controls.Add(button1);

        Button button2 = new Button();
        button2.Text = "2";
        button2.Tag = 1001;
        button2.Left = button1.Width;
        button2.Click += new EventHandler(Button_Click);
        Controls.Add(button2);
    }

    public static void Main()
    {
        Application.Run(new TestForm());
    }

    private void Button_Click(object sender, EventArgs e)
    {
        Help.ShowHelp(this, "test.chm", (HelpNavigator)0x0F, ((Button)sender).Tag); // недокументированная возможность, 0x0F == HH_HELP_CONTEXT.
    }
}
Re[6]: Открыть HTMLHelp топик по ID
От: DimShadow Россия  
Дата: 28.02.06 12:30
Оценка:
За код огромное спасибо. Еще один вопрос в тему: Можно ли вызывать help из командной строки с указанием ID?
Если да, то как?
Re[7]: Открыть HTMLHelp топик по ID
От: KirillDKG  
Дата: 23.03.07 08:56
Оценка:
Здравствуйте, DimShadow, Вы писали:

DS>За код огромное спасибо. Еще один вопрос в тему: Можно ли вызывать help из командной строки с указанием ID?

DS>Если да, то как?

А тестировал этот код в Visual Studio 2005? Я все сделал тоже самое, но ничего не получается... Ни какой реакции на нажатие кнопки. Что может быть не так?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.