/delphi/nonvcl/lib/MiniHtmlHlp.pas
Pascal | 882 lines | 465 code | 68 blank | 349 comment | 8 complexity | b5ed23f7651847c0659cce982380f74b MD5 | raw file
- {******************************************************************}
- { }
- { Borland Delphi Runtime Library }
- { HTML Help interface unit }
- { }
- { Portions created by Microsoft are }
- { Copyright (C) 1995-1999 Microsoft Corporation. }
- { All Rights Reserved. }
- { }
- { The original file is: htmlhelp.h, released 12 May 1999. }
- { The original Pascal code is: HTMLHelp.pas, released 9 Jun 1999. }
- { The initial developer of the Pascal code is Marcel van Brakel }
- { (brakelm@bart.nl). }
- { }
- { Portions created by Marcel van Brakel are }
- { Copyright (C) 1999 Marcel van Brakel. }
- { }
- { Contributor(s): Robert Chandler (robert@helpware.net) }
- { Kurt Senfer (ks@siemens.dk) }
- { }
- { Obtained through: }
- { Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project }
- { JEDI home page, located at http://delphi-jedi.org }
- { }
- { The contents of this file are used with permission, subject to }
- { the Mozilla Public License Version 1.1 (the "License"); you may }
- { not use this file except in compliance with the License. You may }
- { obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an }
- { "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or }
- { implied. See the License for the specific language governing }
- { rights and limitations under the License. }
- { }
- {******************************************************************}
-
- unit MiniHtmlHlp;
-
- interface
-
- (*$HPPEMIT ''*)
- (*$HPPEMIT '#include "htmlhelp.h"'*)
- (*$HPPEMIT ''*)
- (*$HPPEMIT 'typedef struct tagHH_LAST_ERROR'*)
- (*$HPPEMIT '{'*)
- (*$HPPEMIT ' int cbStruct ;'*)
- (*$HPPEMIT ' HRESULT hr ;'*)
- (*$HPPEMIT ' BSTR description ;'*)
- (*$HPPEMIT '} HH_LAST_ERROR ;'*)
- (*$HPPEMIT ''*)
-
- uses
- Windows;
-
- {$I HTMLHLP.INC}
-
- type
- {$IFDEF HTMLHELP12}
- {$IFNDEF _WIN64}
- DWORD_PTR = DWORD;
- {$ENDIF}
- {$ENDIF}
- PCSTR = LPCSTR;
-
- // Commands to pass to HtmlHelp()
-
- const
- HH_DISPLAY_TOPIC = $0000;
- {$EXTERNALSYM HH_DISPLAY_TOPIC}
- HH_HELP_FINDER = $0000; // WinHelp equivalent
- {$EXTERNALSYM HH_HELP_FINDER}
- HH_DISPLAY_TOC = $0001; // not currently implemented
- {$EXTERNALSYM HH_DISPLAY_TOC}
- HH_DISPLAY_INDEX = $0002; // not currently implemented
- {$EXTERNALSYM HH_DISPLAY_INDEX}
- HH_DISPLAY_SEARCH = $0003; // not currently implemented
- {$EXTERNALSYM HH_DISPLAY_SEARCH}
- HH_SET_WIN_TYPE = $0004;
- {$EXTERNALSYM HH_SET_WIN_TYPE}
- HH_GET_WIN_TYPE = $0005;
- {$EXTERNALSYM HH_GET_WIN_TYPE}
- HH_GET_WIN_HANDLE = $0006;
- {$EXTERNALSYM HH_GET_WIN_HANDLE}
- HH_ENUM_INFO_TYPE = $0007; // Get Info type name, call repeatedly to enumerate, -1 at end
- {$EXTERNALSYM HH_ENUM_INFO_TYPE}
- HH_SET_INFO_TYPE = $0008; // Add Info type to filter.
- {$EXTERNALSYM HH_SET_INFO_TYPE}
- HH_SYNC = $0009;
- {$EXTERNALSYM HH_SYNC}
- {$IFDEF HTMLHELP11}
- HH_ADD_NAV_UI = $000A; // not currently implemented
- {$EXTERNALSYM HH_ADD_NAV_UI}
- HH_ADD_BUTTON = $000B; // not currently implemented
- {$EXTERNALSYM HH_ADD_BUTTON}
- HH_GETBROWSER_APP = $000C; // not currently implemented
- {$EXTERNALSYM HH_GETBROWSER_APP}
- {$ENDIF}
- {$IFDEF HTMLHELP12}
- HH_RESERVED1 = $000A;
- {$EXTERNALSYM HH_RESERVED1}
- HH_RESERVED2 = $000B;
- {$EXTERNALSYM HH_RESERVED2}
- HH_RESERVED3 = $000C;
- {$EXTERNALSYM HH_RESERVED3}
- {$ENDIF}
- HH_KEYWORD_LOOKUP = $000D;
- {$EXTERNALSYM HH_KEYWORD_LOOKUP}
- HH_DISPLAY_TEXT_POPUP = $000E; // display string resource id or text in a popup window
- {$EXTERNALSYM HH_DISPLAY_TEXT_POPUP}
- HH_HELP_CONTEXT = $000F; // display mapped numeric value in dwData
- {$EXTERNALSYM HH_HELP_CONTEXT}
- HH_TP_HELP_CONTEXTMENU = $0010; // text popup help, same as WinHelp HELP_CONTEXTMENU
- {$EXTERNALSYM HH_TP_HELP_CONTEXTMENU}
- HH_TP_HELP_WM_HELP = $0011; // text popup help, same as WinHelp HELP_WM_HELP
- {$EXTERNALSYM HH_TP_HELP_WM_HELP}
- HH_CLOSE_ALL = $0012; // close all windows opened directly or indirectly by the caller
- {$EXTERNALSYM HH_CLOSE_ALL}
- HH_ALINK_LOOKUP = $0013; // ALink version of HH_KEYWORD_LOOKUP
- {$EXTERNALSYM HH_ALINK_LOOKUP}
- HH_GET_LAST_ERROR = $0014; // not currently implemented, See HHERROR.h
- {$EXTERNALSYM HH_GET_LAST_ERROR}
- HH_ENUM_CATEGORY = $0015; // Get category name, call repeatedly to enumerate, -1 at end
- {$EXTERNALSYM HH_ENUM_CATEGORY}
- HH_ENUM_CATEGORY_IT = $0016; // Get category info type members, call repeatedly to enumerate, -1 at end
- {$EXTERNALSYM HH_ENUM_CATEGORY_IT}
- HH_RESET_IT_FILTER = $0017; // Clear the info type filter of all info types.
- {$EXTERNALSYM HH_RESET_IT_FILTER}
- HH_SET_INCLUSIVE_FILTER = $0018; // set inclusive filtering method for untyped topics to be included in display
- {$EXTERNALSYM HH_SET_INCLUSIVE_FILTER}
- HH_SET_EXCLUSIVE_FILTER = $0019; // set exclusive filtering method for untyped topics to be excluded from display
- {$EXTERNALSYM HH_SET_EXCLUSIVE_FILTER}
- {$IFDEF HTMLHELP11}
- HH_SET_GUID = $001A; // For Microsoft Installer -- dwData is a pointer to the GUID string
- {$EXTERNALSYM HH_SET_GUID}
- {$ENDIF}
- {$IFDEF HTMLHELP12}
- HH_INITIALIZE = $001C; // Initializes the help system.
- {$EXTERNALSYM HH_INITIALIZE}
- HH_UNINITIALIZE = $001D; // Uninitializes the help system.
- {$EXTERNALSYM HH_UNINITIALIZE}
- HH_PRETRANSLATEMESSAGE = $00FD; // Pumps messages. (NULL, NULL, MSG*).
- {$EXTERNALSYM HH_PRETRANSLATEMESSAGE}
- HH_SET_GLOBAL_PROPERTY = $00FC; // Set a global property. (NULL, NULL, HH_GPROP)
- {$EXTERNALSYM HH_SET_GLOBAL_PROPERTY}
- {$ENDIF}
-
- {$IFDEF HTMLHELP11}
- HH_INTERNAL = $00FF; // Used internally.
- {$EXTERNALSYM HH_INTERNAL}
- {$ENDIF}
-
- {$IFDEF HTMLHELP12}
- HHWIN_PROP_TAB_AUTOHIDESHOW = (1 shl 0); // Automatically hide/show tri-pane window
- {$EXTERNALSYM HHWIN_PROP_TAB_AUTOHIDESHOW}
- {$ENDIF}
- HHWIN_PROP_ONTOP = (1 shl 1); // Top-most window (not currently implemented)
- {$EXTERNALSYM HHWIN_PROP_ONTOP}
- HHWIN_PROP_NOTITLEBAR = (1 shl 2); // no title bar
- {$EXTERNALSYM HHWIN_PROP_NOTITLEBAR}
- HHWIN_PROP_NODEF_STYLES = (1 shl 3); // no default window styles (only HH_WINTYPE.dwStyles)
- {$EXTERNALSYM HHWIN_PROP_NODEF_STYLES}
- HHWIN_PROP_NODEF_EXSTYLES = (1 shl 4); // no default extended window styles (only HH_WINTYPE.dwExStyles)
- {$EXTERNALSYM HHWIN_PROP_NODEF_EXSTYLES}
- HHWIN_PROP_TRI_PANE = (1 shl 5); // use a tri-pane window
- {$EXTERNALSYM HHWIN_PROP_TRI_PANE}
- HHWIN_PROP_NOTB_TEXT = (1 shl 6); // no text on toolbar buttons
- {$EXTERNALSYM HHWIN_PROP_NOTB_TEXT}
- HHWIN_PROP_POST_QUIT = (1 shl 7); // post WM_QUIT message when window closes
- {$EXTERNALSYM HHWIN_PROP_POST_QUIT}
- HHWIN_PROP_AUTO_SYNC = (1 shl 8); // automatically ssync contents and index
- {$EXTERNALSYM HHWIN_PROP_AUTO_SYNC}
- HHWIN_PROP_TRACKING = (1 shl 9); // send tracking notification messages
- {$EXTERNALSYM HHWIN_PROP_TRACKING}
- HHWIN_PROP_TAB_SEARCH = (1 shl 10); // include search tab in navigation pane
- {$EXTERNALSYM HHWIN_PROP_TAB_SEARCH}
- HHWIN_PROP_TAB_HISTORY = (1 shl 11); // include history tab in navigation pane
- {$EXTERNALSYM HHWIN_PROP_TAB_HISTORY}
- {$IFDEF HTMLHELP11}
- HHWIN_PROP_TAB_BOOKMARKS = (1 shl 12); // include bookmark tab in navigation pane
- {$EXTERNALSYM HHWIN_PROP_TAB_BOOKMARKS}
- {$ENDIF}
- {$IFDEF HTMLHELP12}
- HHWIN_PROP_TAB_FAVORITES = (1 shl 12); // include favorites tab in navigation pane
- {$EXTERNALSYM HHWIN_PROP_TAB_FAVORITES}
- {$ENDIF}
- HHWIN_PROP_CHANGE_TITLE = (1 shl 13); // Put current HTML title in title bar
- {$EXTERNALSYM HHWIN_PROP_CHANGE_TITLE}
- HHWIN_PROP_NAV_ONLY_WIN = (1 shl 14); // Only display the navigation window
- {$EXTERNALSYM HHWIN_PROP_NAV_ONLY_WIN}
- HHWIN_PROP_NO_TOOLBAR = (1 shl 15); // Don't display a toolbar
- {$EXTERNALSYM HHWIN_PROP_NO_TOOLBAR}
- HHWIN_PROP_MENU = (1 shl 16); // Menu
- {$EXTERNALSYM HHWIN_PROP_MENU}
- HHWIN_PROP_TAB_ADVSEARCH = (1 shl 17); // Advanced FTS UI.
- {$EXTERNALSYM HHWIN_PROP_TAB_ADVSEARCH}
- HHWIN_PROP_USER_POS = (1 shl 18); // After initial creation, user controls window size/Position
- {$EXTERNALSYM HHWIN_PROP_USER_POS}
- {$IFDEF HTMLHELP12}
- HHWIN_PROP_TAB_CUSTOM1 = (1 shl 19); // Use custom tab #1
- {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM1}
- HHWIN_PROP_TAB_CUSTOM2 = (1 shl 20); // Use custom tab #2
- {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM2}
- HHWIN_PROP_TAB_CUSTOM3 = (1 shl 21); // Use custom tab #3
- {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM3}
- HHWIN_PROP_TAB_CUSTOM4 = (1 shl 22); // Use custom tab #4
- {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM4}
- HHWIN_PROP_TAB_CUSTOM5 = (1 shl 23); // Use custom tab #5
- {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM5}
- HHWIN_PROP_TAB_CUSTOM6 = (1 shl 24); // Use custom tab #6
- {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM6}
- HHWIN_PROP_TAB_CUSTOM7 = (1 shl 25); // Use custom tab #7
- {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM7}
- HHWIN_PROP_TAB_CUSTOM8 = (1 shl 26); // Use custom tab #8
- {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM8}
- HHWIN_PROP_TAB_CUSTOM9 = (1 shl 27); // Use custom tab #9
- {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM9}
- HHWIN_TB_MARGIN = (1 shl 28); // the window type has a margin
- {$EXTERNALSYM HHWIN_TB_MARGIN}
- {$ENDIF}
-
- HHWIN_PARAM_PROPERTIES = (1 shl 1); // valid fsWinProperties
- {$EXTERNALSYM HHWIN_PARAM_PROPERTIES}
- HHWIN_PARAM_STYLES = (1 shl 2); // valid dwStyles
- {$EXTERNALSYM HHWIN_PARAM_STYLES}
- HHWIN_PARAM_EXSTYLES = (1 shl 3); // valid dwExStyles
- {$EXTERNALSYM HHWIN_PARAM_EXSTYLES}
- HHWIN_PARAM_RECT = (1 shl 4); // valid rcWindowPos
- {$EXTERNALSYM HHWIN_PARAM_RECT}
- HHWIN_PARAM_NAV_WIDTH = (1 shl 5); // valid iNavWidth
- {$EXTERNALSYM HHWIN_PARAM_NAV_WIDTH}
- HHWIN_PARAM_SHOWSTATE = (1 shl 6); // valid nShowState
- {$EXTERNALSYM HHWIN_PARAM_SHOWSTATE}
- HHWIN_PARAM_INFOTYPES = (1 shl 7); // valid apInfoTypes
- {$EXTERNALSYM HHWIN_PARAM_INFOTYPES}
- HHWIN_PARAM_TB_FLAGS = (1 shl 8); // valid fsToolBarFlags
- {$EXTERNALSYM HHWIN_PARAM_TB_FLAGS}
- HHWIN_PARAM_EXPANSION = (1 shl 9); // valid fNotExpanded
- {$EXTERNALSYM HHWIN_PARAM_EXPANSION}
- HHWIN_PARAM_TABPOS = (1 shl 10); // valid tabpos
- {$EXTERNALSYM HHWIN_PARAM_TABPOS}
- HHWIN_PARAM_TABORDER = (1 shl 11); // valid taborder
- {$EXTERNALSYM HHWIN_PARAM_TABORDER}
- HHWIN_PARAM_HISTORY_COUNT = (1 shl 12); // valid cHistory
- {$EXTERNALSYM HHWIN_PARAM_HISTORY_COUNT}
- HHWIN_PARAM_CUR_TAB = (1 shl 13); // valid curNavType
- {$EXTERNALSYM HHWIN_PARAM_CUR_TAB}
-
- HHWIN_BUTTON_EXPAND = (1 shl 1); // Expand/contract button
- {$EXTERNALSYM HHWIN_BUTTON_EXPAND}
- HHWIN_BUTTON_BACK = (1 shl 2); // Back button
- {$EXTERNALSYM HHWIN_BUTTON_BACK}
- HHWIN_BUTTON_FORWARD = (1 shl 3); // Forward button
- {$EXTERNALSYM HHWIN_BUTTON_FORWARD}
- HHWIN_BUTTON_STOP = (1 shl 4); // Stop button
- {$EXTERNALSYM HHWIN_BUTTON_STOP}
- HHWIN_BUTTON_REFRESH = (1 shl 5); // Refresh button
- {$EXTERNALSYM HHWIN_BUTTON_REFRESH}
- HHWIN_BUTTON_HOME = (1 shl 6); // Home button
- {$EXTERNALSYM HHWIN_BUTTON_HOME}
- HHWIN_BUTTON_BROWSE_FWD = (1 shl 7); // not implemented
- {$EXTERNALSYM HHWIN_BUTTON_BROWSE_FWD}
- HHWIN_BUTTON_BROWSE_BCK = (1 shl 8); // not implemented
- {$EXTERNALSYM HHWIN_BUTTON_BROWSE_BCK}
- HHWIN_BUTTON_NOTES = (1 shl 9); // not implemented
- {$EXTERNALSYM HHWIN_BUTTON_NOTES}
- HHWIN_BUTTON_CONTENTS = (1 shl 10); // not implemented
- {$EXTERNALSYM HHWIN_BUTTON_CONTENTS}
- HHWIN_BUTTON_SYNC = (1 shl 11); // Sync button
- {$EXTERNALSYM HHWIN_BUTTON_SYNC}
- HHWIN_BUTTON_OPTIONS = (1 shl 12); // Options button
- {$EXTERNALSYM HHWIN_BUTTON_OPTIONS}
- HHWIN_BUTTON_PRINT = (1 shl 13); // Print button
- {$EXTERNALSYM HHWIN_BUTTON_PRINT}
- HHWIN_BUTTON_INDEX = (1 shl 14); // not implemented
- {$EXTERNALSYM HHWIN_BUTTON_INDEX}
- HHWIN_BUTTON_SEARCH = (1 shl 15); // not implemented
- {$EXTERNALSYM HHWIN_BUTTON_SEARCH}
- HHWIN_BUTTON_HISTORY = (1 shl 16); // not implemented
- {$EXTERNALSYM HHWIN_BUTTON_HISTORY}
- {$IFDEF HTMLHELP11}
- HHWIN_BUTTON_BOOKMARKS = (1 shl 17); // not implemented
- {$EXTERNALSYM HHWIN_BUTTON_BOOKMARKS}
- {$ENDIF}
- {$IFDEF HTMLHELP12}
- HHWIN_BUTTON_FAVORITES = (1 shl 17); // not implemented
- {$EXTERNALSYM HHWIN_BUTTON_FAVORITES}
- {$ENDIF}
- HHWIN_BUTTON_JUMP1 = (1 shl 18);
- {$EXTERNALSYM HHWIN_BUTTON_JUMP1}
- HHWIN_BUTTON_JUMP2 = (1 shl 19);
- {$EXTERNALSYM HHWIN_BUTTON_JUMP2}
- HHWIN_BUTTON_ZOOM = (1 shl 20);
- {$EXTERNALSYM HHWIN_BUTTON_ZOOM}
- HHWIN_BUTTON_TOC_NEXT = (1 shl 21);
- {$EXTERNALSYM HHWIN_BUTTON_TOC_NEXT}
- HHWIN_BUTTON_TOC_PREV = (1 shl 22);
- {$EXTERNALSYM HHWIN_BUTTON_TOC_PREV}
-
- HHWIN_DEF_BUTTONS = HHWIN_BUTTON_EXPAND or HHWIN_BUTTON_BACK or
- HHWIN_BUTTON_OPTIONS or HHWIN_BUTTON_PRINT;
- {$EXTERNALSYM HHWIN_DEF_BUTTONS}
-
- // Button IDs
-
- IDTB_EXPAND = 200;
- {$EXTERNALSYM IDTB_EXPAND}
- IDTB_CONTRACT = 201;
- {$EXTERNALSYM IDTB_CONTRACT}
- IDTB_STOP = 202;
- {$EXTERNALSYM IDTB_STOP}
- IDTB_REFRESH = 203;
- {$EXTERNALSYM IDTB_REFRESH}
- IDTB_BACK = 204;
- {$EXTERNALSYM IDTB_BACK}
- IDTB_HOME = 205;
- {$EXTERNALSYM IDTB_HOME}
- IDTB_SYNC = 206;
- {$EXTERNALSYM IDTB_SYNC}
- IDTB_PRINT = 207;
- {$EXTERNALSYM IDTB_PRINT}
- IDTB_OPTIONS = 208;
- {$EXTERNALSYM IDTB_OPTIONS}
- IDTB_FORWARD = 209;
- {$EXTERNALSYM IDTB_FORWARD}
- IDTB_NOTES = 210; // not implemented
- {$EXTERNALSYM IDTB_NOTES}
- IDTB_BROWSE_FWD = 211;
- {$EXTERNALSYM IDTB_BROWSE_FWD}
- IDTB_BROWSE_BACK = 212;
- {$EXTERNALSYM IDTB_BROWSE_BACK}
- IDTB_CONTENTS = 213; // not implemented
- {$EXTERNALSYM IDTB_CONTENTS}
- IDTB_INDEX = 214; // not implemented
- {$EXTERNALSYM IDTB_INDEX}
- IDTB_SEARCH = 215; // not implemented
- {$EXTERNALSYM IDTB_SEARCH}
- IDTB_HISTORY = 216; // not implemented
- {$EXTERNALSYM IDTB_HISTORY}
- {$IFDEF HTMLHELP11}
- IDTB_BOOKMARKS = 217; // not implemented
- {$EXTERNALSYM IDTB_BOOKMARKS}
- {$ENDIF}
- {$IFDEF HTMLHELP12}
- IDTB_FAVORITES = 217; // not implemented
- {$EXTERNALSYM IDTB_FAVORITES}
- {$ENDIF}
- IDTB_JUMP1 = 218;
- {$EXTERNALSYM IDTB_JUMP1}
- IDTB_JUMP2 = 219;
- {$EXTERNALSYM IDTB_JUMP2}
- IDTB_CUSTOMIZE = 221;
- {$EXTERNALSYM IDTB_CUSTOMIZE}
- IDTB_ZOOM = 222;
- {$EXTERNALSYM IDTB_ZOOM}
- IDTB_TOC_NEXT = 223;
- {$EXTERNALSYM IDTB_TOC_NEXT}
- IDTB_TOC_PREV = 224;
- {$EXTERNALSYM IDTB_TOC_PREV}
-
- // Notification codes
-
- HHN_FIRST = -860;
- {$EXTERNALSYM HHN_FIRST}
- HHN_LAST = -879;
- {$EXTERNALSYM HHN_LAST}
-
- HHN_NAVCOMPLETE = (HHN_FIRST - 0);
- {$EXTERNALSYM HHN_NAVCOMPLETE}
- HHN_TRACK = (HHN_FIRST - 1);
- {$EXTERNALSYM HHN_TRACK}
- HHN_WINDOW_CREATE = (HHN_FIRST - 2);
- {$EXTERNALSYM HHN_WINDOW_CREATE}
-
- type
- PHHLastError = ^THHLastError;
- tagHH_LAST_ERROR = packed record
- cbStruct: Integer; // size of this structure
- hr: HRESULT; // the last error code.
- description: PWideChar; // a description of the error (unicode string - BSTR).
- end;
- THHLastError = tagHH_LAST_ERROR;
-
- PHHNNotify = ^THHNNotify;
- tagHHN_NOTIFY = packed record
- hdr: NMHDR;
- pszUrl: PCSTR; // multibyte null-terminated string
- end;
- {$EXTERNALSYM tagHHN_NOTIFY}
- HHN_NOTIFY = tagHHN_NOTIFY;
- {$EXTERNALSYM HHN_NOTIFY}
- THHNNotify = tagHHN_NOTIFY;
-
- PHHPopup = ^THHPopup;
- tagHH_POPUP = packed record
- cbStruct: Integer; // sizeof this structure
- hinst: HINST; // instance handle for string resource
- idString: UINT; // string resource id, or text id if pszFile is specified in HtmlHelp call
- pszText: LPCTSTR; // used if idString is zero
- pt: TPoint; // top center of popup window
- clrForeGround: TColorRef; // use -1 for default
- clrBackground: TColorRef; // use -1 for default
- rcMargins: TRect; // amount of space between edges of window and text, -1 for each member to ignore
- pszFont: LPCTSTR; // facename, point size, char set, BOLD ITALIC UNDERLINE
- end;
- {$EXTERNALSYM tagHH_POPUP}
- HH_POPUP = tagHH_POPUP;
- {$EXTERNALSYM HH_POPUP}
- THHPopup = tagHH_POPUP;
-
- PHHAKLink = ^THHAKLink;
- tagHH_AKLINK = packed record
- cbStruct: Integer; // sizeof this structure
- fReserved: BOOL; // must be FALSE (really!)
- pszKeywords: LPCTSTR; // semi-colon separated keywords
- pszUrl: LPCTSTR; // URL to jump to if no keywords found (may be NULL)
- pszMsgText: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
- pszMsgTitle: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
- pszWindow: LPCTSTR; // Window to display URL in
- fIndexOnFail: BOOL; // Displays index if keyword lookup fails.
- end;
- {$EXTERNALSYM tagHH_AKLINK}
- HH_AKLINK = tagHH_AKLINK;
- {$EXTERNALSYM HH_AKLINK}
- THHAKLink = tagHH_AKLINK;
-
- const
- HHWIN_NAVTYPE_TOC = 0;
- {$EXTERNALSYM HHWIN_NAVTYPE_TOC}
- HHWIN_NAVTYPE_INDEX = 1;
- {$EXTERNALSYM HHWIN_NAVTYPE_INDEX}
- HHWIN_NAVTYPE_SEARCH = 2;
- {$EXTERNALSYM HHWIN_NAVTYPE_SEARCH}
- {$IFDEF HTMLHELP11}
- HHWIN_NAVTYPE_BOOKMARKS = 3;
- {$EXTERNALSYM HHWIN_NAVTYPE_BOOKMARKS}
- HHWIN_NAVTYPE_HISTORY = 4; //not implemented
- {$EXTERNALSYM HHWIN_NAVTYPE_HISTORY}
- {$ENDIF}
- {$IFDEF HTMLHELP12}
- HHWIN_NAVTYPE_FAVORITES = 3;
- {$EXTERNALSYM HHWIN_NAVTYPE_FAVORITES}
- HHWIN_NAVTYPE_HISTORY = 4; //not implemented
- {$EXTERNALSYM HHWIN_NAVTYPE_HISTORY}
- HHWIN_NAVTYPE_AUTHOR = 5;
- {$EXTERNALSYM HHWIN_NAVTYPE_AUTHOR}
- HHWIN_NAVTYPE_CUSTOM_FIRST = 11;
- {$EXTERNALSYM HHWIN_NAVTYPE_CUSTOM_FIRST}
- {$ENDIF}
-
- IT_INCLUSIVE = 0;
- {$EXTERNALSYM IT_INCLUSIVE}
- IT_EXCLUSIVE = 1;
- {$EXTERNALSYM IT_EXCLUSIVE}
- IT_HIDDEN = 2;
- {$EXTERNALSYM IT_HIDDEN}
-
- type
- PHHEnumIT = ^THHEnumIT;
- tagHH_ENUM_IT = packed record
- cbStruct: Integer; // size of this structure
- iType: Integer; // the type of the information type ie. Inclusive, Exclusive, or Hidden
- pszCatName: LPCSTR; // Set to the name of the Category to enumerate the info types in a category; else NULL
- pszITName: LPCSTR; // volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeing
- pszITDescription: LPCSTR; // volitile pointer to the description of the infotype.
- end;
- {$EXTERNALSYM tagHH_ENUM_IT}
- HH_ENUM_IT = tagHH_ENUM_IT;
- {$EXTERNALSYM HH_ENUM_IT}
- PHH_ENUM_IT = ^tagHH_ENUM_IT;
- {$EXTERNALSYM PHH_ENUM_IT}
- THHEnumIT = tagHH_ENUM_IT;
-
- PHHEnumCat = ^THHEnumCat;
- tagHH_ENUM_CAT = packed record
- cbStruct: Integer; // size of this structure
- pszCatName: LPCSTR; // volitile pointer to the category name
- pszCatDescription: LPCSTR; // volitile pointer to the category description
- end;
- {$EXTERNALSYM tagHH_ENUM_CAT}
- HH_ENUM_CAT = tagHH_ENUM_CAT;
- {$EXTERNALSYM HH_ENUM_CAT}
- PHH_ENUM_CAT = ^tagHH_ENUM_CAT;
- {$EXTERNALSYM PHH_ENUM_CAT}
- THHEnumCat = tagHH_ENUM_CAT;
-
- PHHSetInfoType = ^THHSetInfoType;
- tagHH_SET_INFOTYPE = packed record
- cbStruct: Integer; // the size of this structure
- pszCatName: LPCSTR; // the name of the category, if any, the InfoType is a member of.
- pszInfoTypeName: LPCSTR; // the name of the info type to add to the filter
- end;
- {$EXTERNALSYM tagHH_SET_INFOTYPE}
- HH_SET_INFOTYPE = tagHH_SET_INFOTYPE;
- {$EXTERNALSYM HH_SET_INFOTYPE}
- PHH_SET_INFOTYPE = ^tagHH_SET_INFOTYPE;
- {$EXTERNALSYM PHH_SET_INFOTYPE}
- THHSetInfoType = tagHH_SET_INFOTYPE;
-
- HH_INFOTYPE = DWORD;
- {$EXTERNALSYM HH_INFOTYPE}
- PHH_INFOTYPE = ^HH_INFOTYPE;
- {$EXTERNALSYM PHH_INFOTYPE}
- PHHInfoType = ^THHInfoType;
- THHInfoType = HH_INFOTYPE;
-
- const
- HHWIN_NAVTAB_TOP = 0;
- {$EXTERNALSYM HHWIN_NAVTAB_TOP}
- HHWIN_NAVTAB_LEFT = 1;
- {$EXTERNALSYM HHWIN_NAVTAB_LEFT}
- HHWIN_NAVTAB_BOTTOM = 2;
- {$EXTERNALSYM HHWIN_NAVTAB_BOTTOM}
-
- HH_MAX_TABS = 19;
- {$EXTERNALSYM HH_MAX_TABS}
-
- HH_TAB_CONTENTS = 0;
- {$EXTERNALSYM HH_TAB_CONTENTS}
- HH_TAB_INDEX = 1;
- {$EXTERNALSYM HH_TAB_INDEX}
- HH_TAB_SEARCH = 2;
- {$EXTERNALSYM HH_TAB_SEARCH}
- {$IFDEF HTMLHELP11}
- HH_TAB_BOOKMARKS = 3;
- {$EXTERNALSYM HH_TAB_BOOKMARKS}
- HH_TAB_HISTORY = 4;
- {$EXTERNALSYM HH_TAB_HISTORY}
- {$ENDIF}
- {$IFDEF HTMLHELP12}
- HH_TAB_FAVORITES = 3;
- {$EXTERNALSYM HH_TAB_FAVORITES}
- HH_TAB_HISTORY = 4;
- {$EXTERNALSYM HH_TAB_HISTORY}
- HH_TAB_AUTHOR = 5;
- {$EXTERNALSYM HH_TAB_AUTHOR}
-
- HH_TAB_CUSTOM_FIRST = 11;
- {$EXTERNALSYM HH_TAB_CUSTOM_FIRST}
- HH_TAB_CUSTOM_LAST = HH_MAX_TABS;
- {$EXTERNALSYM HH_TAB_CUSTOM_LAST}
-
- HH_MAX_TABS_CUSTOM = HH_TAB_CUSTOM_LAST - HH_TAB_CUSTOM_FIRST + 1;
- {$EXTERNALSYM HH_MAX_TABS_CUSTOM}
- {$ENDIF}
-
- // HH_DISPLAY_SEARCH Command Related Structures and Constants
-
- HH_FTS_DEFAULT_PROXIMITY = -1;
- {$EXTERNALSYM HH_FTS_DEFAULT_PROXIMITY}
-
- type
- PHHFtsQuery = ^THHFtsQuery;
- tagHH_FTS_QUERY = packed record
- cbStruct: Integer; // Sizeof structure in bytes.
- fUniCodeStrings: BOOL; // TRUE if all strings are unicode.
- pszSearchQuery: LPCTSTR; // String containing the search query.
- iProximity: LongInt; // Word proximity.
- fStemmedSearch: BOOL; // TRUE for StemmedSearch only.
- fTitleOnly: BOOL; // TRUE for Title search only.
- fExecute: BOOL; // TRUE to initiate the search.
- pszWindow: LPCTSTR; // Window to display in
- end;
- {$EXTERNALSYM tagHH_FTS_QUERY}
- HH_FTS_QUERY = tagHH_FTS_QUERY;
- {$EXTERNALSYM HH_FTS_QUERY}
- THHFtsQuery = tagHH_FTS_QUERY;
-
- PHHWinType = ^THHWinType;
- tagHH_WINTYPE = packed record
- cbStruct: Integer; // IN: size of this structure including all Information Types
- fUniCodeStrings: BOOL; // IN/OUT: TRUE if all strings are in UNICODE
- pszType: LPCTSTR; // IN/OUT: Name of a type of window
- fsValidMembers: DWORD; // IN: Bit flag of valid members (HHWIN_PARAM_)
- fsWinProperties: DWORD; // IN/OUT: Properties/attributes of the window (HHWIN_)
-
- pszCaption: LPCTSTR; // IN/OUT: Window title
- dwStyles: DWORD; // IN/OUT: Window styles
- dwExStyles: DWORD; // IN/OUT: Extended Window styles
- rcWindowPos: TRect; // IN: Starting position, OUT: current position
- nShowState: Integer; // IN: show state (e.g., SW_SHOW)
-
- hwndHelp: HWND; // OUT: window handle
- hwndCaller: HWND; // OUT: who called this window
-
- paInfoTypes: PHHInfoType; // IN: Pointer to an array of Information Types
-
- { The following members are only valid if HHWIN_PROP_TRI_PANE is set }
-
- hwndToolBar: HWND; // OUT: toolbar window in tri-pane window
- hwndNavigation: HWND; // OUT: navigation window in tri-pane window
- hwndHTML: HWND; // OUT: window displaying HTML in tri-pane window
- iNavWidth: Integer; // IN/OUT: width of navigation window
- rcHTML: TRect; // OUT: HTML window coordinates
-
- pszToc: LPCTSTR; // IN: Location of the table of contents file
- pszIndex: LPCTSTR; // IN: Location of the index file
- pszFile: LPCTSTR; // IN: Default location of the html file
- pszHome: LPCTSTR; // IN/OUT: html file to display when Home button is clicked
- fsToolBarFlags: DWORD; // IN: flags controling the appearance of the toolbar
- fNotExpanded: BOOL; // IN: TRUE/FALSE to contract or expand, OUT: current state
- curNavType: Integer; // IN/OUT: UI to display in the navigational pane
- tabpos: Integer; // IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOM
- idNotify: Integer; // IN: ID to use for WM_NOTIFY messages
- tabOrder: array[0..HH_MAX_TABS] of Byte; // IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabs
- cHistory: Integer; // IN/OUT: number of history items to keep (default is 30)
- pszJump1: LPCTSTR; // Text for HHWIN_BUTTON_JUMP1
- pszJump2: LPCTSTR; // Text for HHWIN_BUTTON_JUMP2
- pszUrlJump1: LPCTSTR; // URL for HHWIN_BUTTON_JUMP1
- pszUrlJump2: LPCTSTR; // URL for HHWIN_BUTTON_JUMP2
- rcMinSize: TRect; // Minimum size for window (ignored in version 1)
- cbInfoTypes: Integer; // size of paInfoTypes;
- {$IFDEF HTMLHELP12}
- pszCustomTabs: LPCTSTR; // multiple zero-terminated Strings
- {$ENDIF}
- end;
- {$EXTERNALSYM tagHH_WINTYPE}
- HH_WINTYPE = tagHH_WINTYPE;
- {$EXTERNALSYM HH_WINTYPE}
- PHH_WINTYPE = ^tagHH_WINTYPE;
- {$EXTERNALSYM PHH_WINTYPE}
- THHWinType = tagHH_WINTYPE;
-
- const
- HHACT_TAB_CONTENTS = 0;
- {$EXTERNALSYM HHACT_TAB_CONTENTS}
- HHACT_TAB_INDEX = 1;
- {$EXTERNALSYM HHACT_TAB_INDEX}
- HHACT_TAB_SEARCH = 2;
- {$EXTERNALSYM HHACT_TAB_SEARCH}
- HHACT_TAB_HISTORY = 3;
- {$EXTERNALSYM HHACT_TAB_HISTORY}
- HHACT_TAB_FAVORITES = 4;
- {$EXTERNALSYM HHACT_TAB_FAVORITES}
- HHACT_EXPAND = 5;
- {$EXTERNALSYM HHACT_EXPAND}
- HHACT_CONTRACT = 6;
- {$EXTERNALSYM HHACT_CONTRACT}
- HHACT_BACK = 7;
- {$EXTERNALSYM HHACT_BACK}
- HHACT_FORWARD = 8;
- {$EXTERNALSYM HHACT_FORWARD}
- HHACT_STOP = 9;
- {$EXTERNALSYM HHACT_STOP}
- HHACT_REFRESH = 10;
- {$EXTERNALSYM HHACT_REFRESH}
- HHACT_HOME = 11;
- {$EXTERNALSYM HHACT_HOME}
- HHACT_SYNC = 12;
- {$EXTERNALSYM HHACT_SYNC}
- HHACT_OPTIONS = 13;
- {$EXTERNALSYM HHACT_OPTIONS}
- HHACT_PRINT = 14;
- {$EXTERNALSYM HHACT_PRINT}
- HHACT_HIGHLIGHT = 15;
- {$EXTERNALSYM HHACT_HIGHLIGHT}
- HHACT_CUSTOMIZE = 16;
- {$EXTERNALSYM HHACT_CUSTOMIZE}
- HHACT_JUMP1 = 17;
- {$EXTERNALSYM HHACT_JUMP1}
- HHACT_JUMP2 = 18;
- {$EXTERNALSYM HHACT_JUMP2}
- HHACT_ZOOM = 19;
- {$EXTERNALSYM HHACT_ZOOM}
- HHACT_TOC_NEXT = 20;
- {$EXTERNALSYM HHACT_TOC_NEXT}
- HHACT_TOC_PREV = 21;
- {$EXTERNALSYM HHACT_TOC_PREV}
- HHACT_NOTES = 22;
- {$EXTERNALSYM HHACT_NOTES}
- HHACT_LAST_ENUM = 23;
- {$EXTERNALSYM HHACT_LAST_ENUM}
-
- type
- PHHNTrack = ^THHNTrack;
- tagHHNTRACK = packed record
- hdr: NMHDR;
- pszCurUrl: PCSTR; // Multi-byte, null-terminated string
- idAction: Integer; // HHACT_ value
- phhWinType: PHHWinType; // Current window type structure
- end;
- {$EXTERNALSYM tagHHNTRACK}
- HHNTRACK = tagHHNTRACK;
- {$EXTERNALSYM HHNTRACK}
- THHNTrack = tagHHNTRACK;
-
- {$IFDEF HTMLHELP_DYNAMIC_LINK}
- type
- THtmlHelpA = function (hwndCaller: HWND; pszFile: PAnsiChar; uCommand: UINT;
- dwData: DWORD): HWND; stdcall;
- THtmlHelpW = function (hwndCaller: HWND; pszFile: PWideChar; uCommand: UINT;
- dwData: DWORD): HWND; stdcall;
- THtmlHelp = THtmlHelpA;
-
- var
- HtmlHelpA: THtmlHelpA = nil;
- HtmlHelpW: THtmlHelpW = nil;
- HtmlHelp: THtmlHelp = nil;
- {$ELSE}
- function HtmlHelpA(hwndCaller: HWND; pszFile: PAnsiChar; uCommand: UINT;
- {$IFDEF HTMLHELP11}
- dwData: DWORD): HWND; stdcall;
- {$ENDIF}
- {$IFDEF HTMLHELP12}
- dwData: DWORD_PTR): HWND; stdcall;
- {$ENDIF}
- {$EXTERNALSYM HtmlHelpA}
- function HtmlHelpW(hwndCaller: HWND; pszFile: PWideChar; uCommand: UINT;
- {$IFDEF HTMLHELP11}
- dwData: DWORD): HWND; stdcall;
- {$ENDIF}
- {$IFDEF HTMLHELP12}
- dwData: DWORD_PTR): HWND; stdcall;
- {$ENDIF}
- {$EXTERNALSYM HtmlHelpW}
- function HtmlHelp(hwndCaller: HWND; pszFile: PChar; uCommand: UINT;
- {$IFDEF HTMLHELP11}
- dwData: DWORD): HWND; stdcall;
- {$ENDIF}
- {$IFDEF HTMLHELP12}
- dwData: DWORD_PTR): HWND; stdcall;
- {$ENDIF}
- {$EXTERNALSYM HtmlHelp}
- {$ENDIF}
-
- // Use the following for GetProcAddress to load from hhctrl.ocx
-
- const
- ATOM_HTMLHELP_API_ANSI = LPTSTR(DWORD(WORD(14)));
- {$EXTERNALSYM ATOM_HTMLHELP_API_ANSI}
- ATOM_HTMLHELP_API_UNICODE = LPTSTR(DWORD(WORD(15)));
- {$EXTERNALSYM ATOM_HTMLHELP_API_UNICODE}
-
- {$IFDEF HTMLHELP12}
- // Global Control Properties
-
- const
- HH_GPROPID_SINGLETHREAD = 1; // VARIANT_BOOL: True for single thread
- {$EXTERNALSYM HH_GPROPID_SINGLETHREAD}
- HH_GPROPID_TOOLBAR_MARGIN = 2; // long: Provides a left/right margin around the toolbar.
- {$EXTERNALSYM HH_GPROPID_TOOLBAR_MARGIN}
- HH_GPROPID_UI_LANGUAGE = 3; // long: LangId of the UI.
- {$EXTERNALSYM HH_GPROPID_UI_LANGUAGE}
- HH_GPROPID_CURRENT_SUBSET = 4; // BSTR: Current subset.
- {$EXTERNALSYM HH_GPROPID_CURRENT_SUBSET}
- HH_GPROPID_CONTENT_LANGUAGE = 5; // long: LandId for desired content.
- {$EXTERNALSYM HH_GPROPID_CONTENT_LANGUAGE}
-
- type
- HH_GPROPID = HH_GPROPID_SINGLETHREAD..HH_GPROPID_CONTENT_LANGUAGE;
- {$EXTERNALSYM HH_GPROPID}
- THHGPropID = HH_GPROPID;
-
- // Global Property structure
-
- PHHGlobalProperty = ^THHGlobalProperty;
- tagHH_GLOBAL_PROPERTY = record
- id: THHGPropID;
- Dummy: Integer; // JEDI: Added to enforce 8-byte packing
- var_: OleVariant;
- end;
- HH_GLOBAL_PROPERTY = tagHH_GLOBAL_PROPERTY;
- THHGlobalProperty = tagHH_GLOBAL_PROPERTY;
- {$ENDIF}
-
- {$IFDEF HTMLHELP_DYNAMIC_LINK}
- function HtmlHelpLoaded: Boolean;
- {$IFDEF HTMLHELP_DYNAMIC_LINK_EXPLICIT}
- function LoadHtmlHelp: Boolean;
- function UnLoadHtmlHelp: Boolean;
- {$ENDIF}
-
- var
- HtmlHelpIsAvail : boolean;
-
- {$ENDIF}
-
- implementation
-
- {$IFDEF HTMLHELP_DYNAMIC_LINK}
-
- uses
- MSysUtils;
- var
- HtmlHelpLib: THandle = 0;
-
- function GetOCXPath(var Path: string): Boolean;
- const
- HHPathRegKey = 'CLSID\{adb880a6-d8ff-11cf-9377-00aa003b7a11}\InprocServer32';
- var
- rgHandle : HKEY;
- lpType, cbData : dword;
- pBuffer : array[0..MAX_PATH]of char;
- begin
- Result := false;
- lpType := REG_NONE;
-
- // "Autorun"?
- if(RegOpenKeyEx(HKEY_CLASSES_ROOT,HHPathRegKey,0,KEY_QUERY_VALUE,
- rgHandle) = ERROR_SUCCESS) then
- try
- lpType := REG_NONE;
- cbData := 0;
-
- if(RegQueryValueEx(rgHandle,nil,nil,@lpType,nil,@cbData) =
- ERROR_SUCCESS) and
- (lpType = REG_SZ) and (cbData > 1) then
- if(RegQueryValueEx(rgHandle,nil,nil,@lpType,@pBuffer,@cbData) =
- ERROR_SUCCESS) then
- begin
- Path := string(pBuffer);
- Result := (Path <> '') and (fileexists(Path));
- end;
- finally
- RegCloseKey(rgHandle);
- end;
- end;
-
- function HtmlHelpLoaded: Boolean;
- begin
- HtmlHelpIsAvail := (HtmlHelpLib <> 0); Result := HtmlHelpIsAvail;
- end;
-
- function UnLoadHtmlHelp: Boolean;
- begin
- Result := True;
- if HtmlHelpLoaded then
- begin
- if Assigned(HtmlHelp) then HtmlHelp(0, nil, HH_CLOSE_ALL, 0);
- Result := FreeLibrary(HtmlHelpLib);
- HtmlHelpLib := 0;
- @HtmlHelpA := nil;
- @HtmlHelpW := nil;
- @HtmlHelp := nil;
- end;
- end;
-
- function LoadHtmlHelp: Boolean;
- const
- ProcNameA = 'HtmlHelpA';
- ProcNameW = 'HtmlHelpW';
- ProcName = ProcNameA;
- var
- HHOCXPath: string;
- begin
- Result := HtmlHelpLoaded;
- if (not Result) and GetOCXPath(HHOCXPath) then
- begin
- HtmlHelpLib := LoadLibrary(PChar(HHOCXPath));
- if HtmlHelpLoaded then
- begin
- @HtmlHelpA := GetProcAddress(HtmlHelpLib, ProcNameA);
- @HtmlHelpW := GetProcAddress(HtmlHelpLib, ProcNameW);
- @HtmlHelp := GetProcAddress(HtmlHelpLib, ProcName);
- Result := Assigned(HtmlHelpA) and Assigned(HtmlHelpW);
- if not Result then UnLoadHtmlHelp;
- end;
- end;
- end;
- {$ELSE}
- const
- hhctrl = 'hhctrl.ocx';
-
- function HtmlHelpA; external hhctrl Name 'HtmlHelpA';
- {$EXTERNALSYM HtmlHelpA}
- function HtmlHelpW; external hhctrl Name 'HtmlHelpW';
- {$EXTERNALSYM HtmlHelpW}
- function HtmlHelp; external hhctrl Name 'HtmlHelpA';
- {$EXTERNALSYM HtmlHelp}
- {$ENDIF}
-
- {$IFDEF HTMLHELP_DYNAMIC_LINK}
- initialization
- {$IFNDEF HTMLHELP_DYNAMIC_LINK_EXPLICIT}
- LoadHtmlHelp;
- {$ENDIF}
- finalization
- UnLoadHtmlHelp;
- {$ENDIF}
- end.