Вызов сплывающей подсказки из .chm файл в программе C#
От: dinosaurx  
Дата: 12.04.13 08:01
Оценка:
Создал проект справочной системы на MS HTML Workshop. Файл справки подключил к проекту на C#. Всё работало, до тех пор, пока не сталкнулся с вызовом всплыващих подсказок (pop-ups). Файл справки реализовывал на основании http://bardsoftware.chat.ru/articles/htmlhelp/microsoft/api.html#case2. Подсказку пытаюсь вызвать при помощи API-функции HtmlHelp() c параметром HH_TP_WM_HELP. Возвращается сообщение HH_TP_HELP/HH_TP_HELP_CONTEXTMENU: No help ID matches control ID#0. В чём моя ошибка?
Дла файла справки использую:
[MAP]
#include Context.h // Определения для разделов pup-up

[TEXT POPUPS]
Context.h
Popups.txt

Содержание Context.h:
#define IDH_FILE_NEW 21
#define IDH_FILE_OPEN 22
#define IDH_FILE_SAVE 23

Содержание Popups.txt:
.topic IDH_FILE_OPEN
Open a File

.topic IDH_FILE_NEW
Create A New File

.topic IDH_FILE_SAVE
Save a File

Код C# для выозова функции:
[DllImport("hhctrl.ocx", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
public static extern IntPtr HtmlHelp(
IntPtr hWndCaller,
string pszFile,
int uCommand,
int[] dwData);

public enum HTMLHelpCommand: int
{
HH_DISPLAY_TOPIC = 0,
HH_DISPLAY_TOC = 1,
HH_DISPLAY_INDEX = 2,
HH_DISPLAY_SEARCH = 3,
HH_HELP_CONTEXT = 0x000F,
HH_TP_HELP_WM_HELP = 0x0011, // для Pop-up
HH_CLOSE_ALL = 0x0012
}

String pathHelp = Application.StartupPath + @"\Help.chm";
Int32 id = GetDlgCtrlID(button1.Handle);

Int32[] ids = new int[] {id, 22, 0};
IntPtr hendl = HtmlHelp(this.Handle, pathHelp + ":/Popups.txt", (Int32)HTMLHelpCommand.HH_TP_HELP_WM_HELP, ids);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.