103 lines
3.0 KiB
C#
103 lines
3.0 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
using System.Runtime.InteropServices;
|
|
using System.IO;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
/// <summary>
|
|
/// Summary description for HTMLHelp.
|
|
/// </summary>
|
|
internal class HTMLHelp
|
|
{
|
|
#region API_Declaration
|
|
// HH_DISPLAY_SEARCH Command Related Structure
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct tagHH_FTS_QUERY
|
|
{
|
|
long cbStruct;
|
|
long fUniCodeStrings;
|
|
string pszSearchQuery;
|
|
long iProximity;
|
|
long fStemmedSearch;
|
|
long fTitleOnly;
|
|
long fExecute;
|
|
string pszWindow;
|
|
}
|
|
[DllImport("hhctrl.ocx",SetLastError=true, CharSet=CharSet.Ansi, EntryPoint="HtmlHelpA")]
|
|
private static extern IntPtr HtmlHelp(IntPtr hwnd, string lpHelpFile, int wCommand, int dwData);
|
|
[DllImport("hhctrl.ocx",SetLastError=true, CharSet=CharSet.Auto, EntryPoint="HtmlHelp")]
|
|
private static extern IntPtr HTMLHelpFtsQuery (IntPtr hwnd, string lpHelpFile, int wCommand, ref tagHH_FTS_QUERY dwData );
|
|
private const int HH_DISPLAY_TOPIC = 0x0;
|
|
private const int HH_DISPLAY_TOC = 0x1;
|
|
private const int HH_DISPLAY_INDEX = 0x2;
|
|
private const int HH_DISPLAY_SEARCH = 0x3;
|
|
private const int HH_HELP_CONTEXT = 0xF; // display mapped numeric value in dwData
|
|
|
|
[DllImport("user32")]
|
|
private static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
|
|
[DllImport("user32")]
|
|
private static extern bool IsWindow(IntPtr hWnd);
|
|
|
|
public const int WM_CLOSE=0x10;
|
|
|
|
#endregion
|
|
|
|
private Control m_ParentWindow=null;
|
|
private string m_HelpFile="";
|
|
private IntPtr m_HtmlHelpWindowHandle=IntPtr.Zero;
|
|
|
|
public HTMLHelp()
|
|
{}
|
|
public HTMLHelp(Control parent, string helpfile)
|
|
{
|
|
m_ParentWindow=parent;
|
|
m_HelpFile=helpfile;
|
|
}
|
|
public Control Parent
|
|
{
|
|
get {return m_ParentWindow;}
|
|
set {m_ParentWindow=value;}
|
|
}
|
|
public string HelpFile
|
|
{
|
|
get {return m_HelpFile;}
|
|
set {m_HelpFile=value;}
|
|
}
|
|
|
|
public void ShowContents()
|
|
{
|
|
// Display Table Of Contents tab in HTML Help
|
|
if(File.Exists(m_HelpFile))
|
|
m_HtmlHelpWindowHandle=HtmlHelp(m_ParentWindow.Handle,m_HelpFile,HH_DISPLAY_TOC,0);
|
|
else
|
|
throw new InvalidOperationException("Help file could not be found.");
|
|
}
|
|
|
|
public void ShowIndex()
|
|
{
|
|
// Display Table Of Contents tab in HTML Help
|
|
if(File.Exists(m_HelpFile))
|
|
m_HtmlHelpWindowHandle=HtmlHelp(m_ParentWindow.Handle,m_HelpFile,HH_DISPLAY_INDEX,0);
|
|
else
|
|
throw new InvalidOperationException("Help file could not be found.");
|
|
}
|
|
|
|
public void ShowSearch()
|
|
{
|
|
// Display Table Of Contents tab in HTML Help
|
|
if(File.Exists(m_HelpFile))
|
|
m_HtmlHelpWindowHandle=HtmlHelp(m_ParentWindow.Handle,m_HelpFile,HH_DISPLAY_SEARCH,0);
|
|
else
|
|
throw new InvalidOperationException("Help file could not be found.");
|
|
}
|
|
|
|
public void CloseHelpWindow()
|
|
{
|
|
if(m_HtmlHelpWindowHandle!=IntPtr.Zero && IsWindow(m_HtmlHelpWindowHandle))
|
|
PostMessage(m_HtmlHelpWindowHandle,WM_CLOSE,0,0);
|
|
m_HtmlHelpWindowHandle=IntPtr.Zero;
|
|
}
|
|
}
|
|
}
|