interface
uses Windows;
const
// Commands to pass to HtmlHelp()
HH_DISPLAY_TOPIC = $0000;
HH_HELP_FINDER = $0000; // WinHelp equivalent
HH_DISPLAY_TOC = $0001; // not currently implemented
HH_DISPLAY_INDEX = $0002; // not currently implemented
HH_DISPLAY_SEARCH = $0003; // not currently implemented
HH_SET_WIN_TYPE = $0004;
HH_GET_WIN_TYPE = $0005;
HH_GET_WIN_HANDLE = $0006;
HH_ENUM_INFO_TYPE = $0007; // Get Info type name, call repeatedly to enumerate, -1 at end
HH_SET_INFO_TYPE = $0008; // Add Info type to filter.
HH_SYNC = $0009;
HH_RESERVED1 = $000A;
HH_RESERVED2 = $000B;
HH_RESERVED3 = $000C;
HH_KEYWORD_LOOKUP = $000D;
HH_DISPLAY_TEXT_POPUP = $000E; // display string resource id or text in a popup window
HH_HELP_CONTEXT = $000F; // display mapped numeric value in dwData
HH_TP_HELP_CONTEXTMENU = $0010; // text popup help, same as WinHelp HELP_CONTEXTMENU
HH_TP_HELP_WM_HELP = $0011; // text popup help, same as WinHelp HELP_WM_HELP
HH_CLOSE_ALL = $0012; // close all windows opened directly or indirectly by the caller
HH_ALINK_LOOKUP = $0013; // ALink version of HH_KEYWORD_LOOKUP
HH_GET_LAST_ERROR = $0014; // not currently implemented // See HHERROR.h
HH_ENUM_CATEGORY = $0015; // Get category name, call repeatedly to enumerate, -1 at end
HH_ENUM_CATEGORY_IT = $0016; // Get category info type members, call repeatedly to enumerate, -1 at end
HH_RESET_IT_FILTER = $0017; // Clear the info type filter of all info types.
HH_SET_INCLUSIVE_FILTER = $0018; // set inclusive filtering method for untyped topics to be included in display
HH_SET_EXCLUSIVE_FILTER = $0019; // set exclusive filtering method for untyped topics to be excluded from display
HH_INITIALIZE =$001C; // Initializes the help system.
HH_UNINITIALIZE =$001D; // Uninitializes the help system.
HH_PRETRANSLATEMESSAGE = $00fd; // Pumps messages. (NULL, NULL, MSG*).
HH_SET_GLOBAL_PROPERTY = $00fc; // Set a global property. (NULL, NULL, HH_GPROP)
HHWIN_PROP_TAB_AUTOHIDESHOW = (1 shl 0); // Automatically hide/show tri-pane window
HHWIN_PROP_ONTOP = (1 shl 1); // Top-most window
HHWIN_PROP_NOTITLEBAR = (1 shl 2); // no title bar
HHWIN_PROP_NODEF_STYLES = (1 shl 3); // no default window styles (only HH_WINTYPE.dwStyles)
HHWIN_PROP_NODEF_EXSTYLES = (1 shl 4); // no default extended window styles (only HH_WINTYPE.dwExStyles)
HHWIN_PROP_TRI_PANE = (1 shl 5); // use a tri-pane window
HHWIN_PROP_NOTB_TEXT = (1 shl 6); // no text on toolbar buttons
HHWIN_PROP_POST_QUIT = (1 shl 7); // post WM_QUIT message when window closes
HHWIN_PROP_AUTO_SYNC = (1 shl 8); // automatically ssync contents and index
HHWIN_PROP_TRACKING = (1 shl 9); // send tracking notification messages
HHWIN_PROP_TAB_SEARCH = (1 shl 10); // include search tab in navigation pane
HHWIN_PROP_TAB_HISTORY = (1 shl 11); // include history tab in navigation pane
HHWIN_PROP_TAB_FAVORITES = (1 shl 12); // include favorites tab in navigation pane
HHWIN_PROP_CHANGE_TITLE = (1 shl 13); // Put current HTML title in title bar
HHWIN_PROP_NAV_ONLY_WIN = (1 shl 14); // Only display the navigation window
HHWIN_PROP_NO_TOOLBAR = (1 shl 15); // Don't display a toolbar
HHWIN_PROP_MENU = (1 shl 16); // Menu
HHWIN_PROP_TAB_ADVSEARCH = (1 shl 17); // Advanced FTS UI.
HHWIN_PROP_USER_POS = (1 shl 18); // After initial creation, user controls window size/position
HHWIN_PROP_TAB_CUSTOM1 = (1 shl 19); // Use custom tab #1
HHWIN_PROP_TAB_CUSTOM2 = (1 shl 20); // Use custom tab #2
HHWIN_PROP_TAB_CUSTOM3 = (1 shl 21); // Use custom tab #3
HHWIN_PROP_TAB_CUSTOM4 = (1 shl 22); // Use custom tab #4
HHWIN_PROP_TAB_CUSTOM5 = (1 shl 23); // Use custom tab #5
HHWIN_PROP_TAB_CUSTOM6 = (1 shl 24); // Use custom tab #6
HHWIN_PROP_TAB_CUSTOM7 = (1 shl 25); // Use custom tab #7
HHWIN_PROP_TAB_CUSTOM8 = (1 shl 26); // Use custom tab #8
HHWIN_PROP_TAB_CUSTOM9 = (1 shl 27); // Use custom tab #9
HHWIN_TB_MARGIN = (1 shl 28); // the window type has a margin
type
tagHHN_NOTIFY = record
hdr : NMHDR;
pszUrl:PChar; // Multi-byte, null-terminated string
end;
HHN_NOTIFY = tagHHN_NOTIFY;
tagHH_POPUP = record
cbStruct: integer; // sizeof this structure
hinst: longint; // 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: COLORREF; // use -1 for default
clrBackground: COLORREF; // 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;
HH_POPUP = tagHH_POPUP;
tagHH_AKLINK = 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;
HH_AKLINK = tagHH_AKLINK;
type
tagHH_ENUM_IT=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;
tagHH_ENUM_CAT = record
cbStruct: integer; // size of this structure
pszCatName: LPCSTR; // volitile pointer to the category name
pszCatDescription: LPCSTR; // volitile pointer to the category description
end;
tagHH_SET_INFOTYPE = 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;
// HH_DISPLAY_SEARCH Command Related Structures and Constants
HH_FTS_DEFAULT_PROXIMITY = -1;
type
tagHH_FTS_QUERY=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;
HH_FTS_QUERY = tagHH_FTS_QUERY;
// HH_WINTYPE Structure
tagHH_WINTYPE =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: ^HH_INFOTYPE; // 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:
pszCustomTabs: LPCTSTR; // multiple zero-terminated strings
end;
HH_WINTYPE = tagHH_WINTYPE;
PHH_WINTYPE = ^tagHH_WINTYPE;
(* function implementatoins *)
function HtmlHelp( hwndCaller:HWND; strFile:String; uCommand:UINT; dwData:DWORD_PTR ):HWND;
var
OcxFileName:String;
p:PChar;
begin
if HHControlInstance=0 then
begin
OcxFileName := StringOfChar( ' ', 256);
p := PChar( OcxFilename );
GetSystemDirectory(p,255);
StrCat(p,'\HHCTRL.OCX');
HHControlInstance := LoadLibrary( P );
if HHControlInstance = 0 then
raise exception.Create('HHCtrl.OCX not installed!'#13' HTMLHELP cannot displayed!');
@HtmlHelpA := GetProcAddress( HHControlInstance, 'HtmlHelpA');
if @HtmlHelpA = nil then
raise exception.Create('Function HTMLHELP cannot loaded!');
HtmlHelpA( 0, nil, HH_INITIALIZE, (@dwCookie));
end;
result := HtmlHelpA( hwndCaller, PChar( strFile ), uCommand, dwData );
end;
procedure CloseHtmlHelpSystem;
begin
if HHControlInstance<>0 then
begin
HtmlHelpA( 0, nil, HH_UNINITIALIZE, DWORD_PTR(dwCookie));
FreeLibrary(HHControlInstance);
end;
end;