unit igHHInt;(*******************************************************************************
* igHHInt.pas *
* HTML Help API unit, translated from HtmlHelp.h by Igor Glukhov, developer of *
* ProHelp for Delphi & C++Builder. *
* Using ProHelp you can make your app's context-sensitive help as professional *
* as it can be without additional coding. *
* Last Update: May 19, 1999 *
* Internet: http://www.igweb.pair.com *
* Email: [email protected] *
* Fell free to contact us. *
* HTML HELP home page: *
* http://msdn.microsoft.com/workshop/author/htmlhelp/default.asp *
*******************************************************************************){*************************** CUSTOMISATION SECTION **************************}{$DEFINE TRIAL} //Comment or delete this string to disable the Error Message //property and warning message.{******************************************************************************}
interfaceuses Windows,Graphics,Dialogs
{$IFDEF TRIAL}
,ShellApi,Controls
{$ENDIF}
;// Commands to pass to HtmlHelp()
constHH_DISPLAY_TOPIC = $0000;
HH_HELP_FINDER = $0000; // WinHelp equivalent
HH_DISPLAY_TOC = $0001; // Selects the TOC tab in the Navigation pane
HH_DISPLAY_INDEX = $0002; // Selects the Index tab in the Navigation pane
HH_DISPLAY_SEARCH = $0003; // Selects the Search tab in the Navigation pane
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_ADD_NAV_UI = $000A; // not currently implemented
HH_ADD_BUTTON = $000B; // not currently implemented
HH_GETBROWSER_APP = $000C; // not currently implemented
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_SET_GUID = $001A; // For Microsoft Installer -- dwData is a pointer to the GUID string
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)
HH_INTERNAL = $00FF; // Used internally.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 marginHHWIN_PARAM_PROPERTIES = (1 shl 1); // valid fsWinProperties
HHWIN_PARAM_STYLES = (1 shl 2); // valid dwStyles
HHWIN_PARAM_EXSTYLES = (1 shl 3); // valid dwExStyles
HHWIN_PARAM_RECT = (1 shl 4); // valid rcWindowPos
HHWIN_PARAM_NAV_WIDTH = (1 shl 5); // valid iNavWidth
HHWIN_PARAM_SHOWSTATE = (1 shl 6); // valid nShowState
HHWIN_PARAM_INFOTYPES = (1 shl 7); // valid apInfoTypes
HHWIN_PARAM_TB_FLAGS = (1 shl 8); // valid fsToolBarFlags
HHWIN_PARAM_EXPANSION = (1 shl 9); // valid fNotExpanded
HHWIN_PARAM_TABPOS = (1 shl 10); // valid tabpos
HHWIN_PARAM_TABORDER = (1 shl 11); // valid taborder
HHWIN_PARAM_HISTORY_COUNT = (1 shl 12); // valid cHistory
HHWIN_PARAM_CUR_TAB = (1 shl 13); // valid curNavTypeHHWIN_BUTTON_EXPAND = (1 shl 1); // Expand/contract button
HHWIN_BUTTON_BACK = (1 shl 2); // Back button
HHWIN_BUTTON_FORWARD = (1 shl 3); // Forward button
HHWIN_BUTTON_STOP = (1 shl 4); // Stop button
HHWIN_BUTTON_REFRESH = (1 shl 5); // Refresh button
HHWIN_BUTTON_HOME = (1 shl 6); // Home button
HHWIN_BUTTON_BROWSE_FWD = (1 shl 7); // not implemented
HHWIN_BUTTON_BROWSE_BCK = (1 shl 8); // not implemented
HHWIN_BUTTON_NOTES = (1 shl 9); // not implemented
HHWIN_BUTTON_CONTENTS = (1 shl 10); // not implemented
HHWIN_BUTTON_SYNC = (1 shl 11); // Sync button
HHWIN_BUTTON_OPTIONS = (1 shl 12); // Options button
HHWIN_BUTTON_PRINT = (1 shl 13); // Print button
HHWIN_BUTTON_INDEX = (1 shl 14); // not implemented
HHWIN_BUTTON_SEARCH = (1 shl 15); // not implemented
HHWIN_BUTTON_HISTORY = (1 shl 16); // not implemented
HHWIN_BUTTON_BOOKMARKS = (1 shl 17); // not implemented
HHWIN_BUTTON_JUMP1 = (1 shl 18);
HHWIN_BUTTON_JUMP2 = (1 shl 19);
HHWIN_BUTTON_ZOOM = (1 shl 20);
HHWIN_BUTTON_TOC_NEXT = (1 shl 21);
HHWIN_BUTTON_TOC_PREV = (1 shl 22);HHWIN_DEF_BUTTONS = HHWIN_BUTTON_EXPAND
or HHWIN_BUTTON_BACK
or HHWIN_BUTTON_OPTIONS
or HHWIN_BUTTON_PRINT;// Button IDsIDTB_EXPAND = 200;
IDTB_CONTRACT = 201;
IDTB_STOP = 202;
IDTB_REFRESH = 203;
IDTB_BACK = 204;
IDTB_HOME = 205;
IDTB_SYNC = 206;
IDTB_PRINT = 207;
IDTB_OPTIONS = 208;
IDTB_FORWARD = 209;
IDTB_NOTES = 210; // not implemented
IDTB_BROWSE_FWD = 211;
IDTB_BROWSE_BACK = 212;
IDTB_CONTENTS = 213; // not implemented
IDTB_INDEX = 214; // not implemented
IDTB_SEARCH = 215; // not implemented
IDTB_HISTORY = 216; // not implemented
IDTB_BOOKMARKS = 217; // not implemented
IDTB_JUMP1 = 218;
IDTB_JUMP2 = 219;
IDTB_CUSTOMIZE = 221;
IDTB_ZOOM = 222;
IDTB_TOC_NEXT = 223;
IDTB_TOC_PREV = 224;// Notification codesHHN_FIRST = -860;
HHN_LAST = -879;HHN_NAVCOMPLETE = (HHN_FIRST-0);
HHN_TRACK = (HHN_FIRST-1);
HHN_WINDOW_CREATE = (HHN_FIRST-2);typeHH_POPUP = packed record
cbStruct: integer; // sizeof this structure
hinst: HINST; // instance handle for string resource
idString: cardinal; // string resource id, or text id if pszFile is specified in HtmlHelp call
pszText: PChar; // used if idString is zero
pt: TPoint; // top center of popup window
clrForeground: TColor; // use -1 for default
clrBackground: TColor; // use -1 for default
rcMargins: TRect; // amount of space between edges of window and text, -1 for each member to ignore
pszFont: PChar; // facename, point size, char set, BOLD ITALIC UNDERLINE
end;
THHPopUp = HH_POPUP;HH_AKLINK = packed record
cbStruct: integer; // sizeof this structure
fReserved: BOOL; // must be FALSE (really!)
pszKeywords: PChar; // semi-colon separated keywords
pszUrl: PChar; // URL to jump to if no keywords found (may be NULL)
pszMsgText: PChar; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
pszMsgTitle: PChar; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
pszWindow: PChar; // Window to display URL in
fIndexOnFail: Bool; // Displays index if keyword lookup fails.
end;
THHAKLink = HH_AKLINK;constHHWIN_NAVTYPE_TOC = 0;
HHWIN_NAVTYPE_INDEX = 1;
HHWIN_NAVTYPE_SEARCH = 2;
HHWIN_NAVTYPE_BOOKMARKS = 3;
HHWIN_NAVTYPE_HISTORY = 4; // not implemented
HHWIN_NAVTYPE_AUTHOR = 5;
HHWIN_NAVTYPE_CUSTOM_FIRST = 11;// Information typesIT_INCLUSIVE = 0;
IT_EXCLUSIVE = 1;
IT_HIDDEN = 2;typeTITType = (
ITInclusive,
ITExclusive,
ITHidden
);HH_ENUM_IT = packed record
cbStruct: integer; // size of this structure
iType: integer; // the type of the information type ie. Inclusive, Exclusive, or Hidden
// iType: TITType; // the type of the information type ie. Inclusive, Exclusive, or Hidden
pszCatName: PChar; // Set to the name of the Category to enumerate the info types in a category; else NULL
pszITName: PChar; // volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeing
pszITDescription: PChar; // volitile pointer to the description of the infotype.
end;THHEnumIT = HH_ENUM_IT;
PHH_ENUM_IT =^HH_ENUM_IT;
PTHHEnumIT = PHH_ENUM_IT;HH_ENUM_CAT = packed record
cbStruct: integer; // size of this structure
pszCatName: PChar; // volitile pointer to the category name
pszCatDescription: PChar; // volitile pointer to the category description
end;THHEnumCat = HH_ENUM_CAT;
PTHH_ENUM_CAT = ^HH_ENUM_CAT;
PTHHEnumCat = PTHH_ENUM_CAT;HH_SET_INFOTYPE = packed record
cbStruct: integer; // the size of this structure
pszCatName: PChar; // the name of the category, if any, the InfoType is a member of.
pszInfoTypeName: PChar; // the name of the info type to add to the filter
end;THHSetInfoType = HH_SET_INFOTYPE;
PHH_SET_INFOTYPE = ^HH_SET_INFOTYPE;
PTHHSetInfoType = PHH_SET_INFOTYPE;HH_INFOTYPE = DWORD;
THHInfoType = DWORD;
PHH_INFOTYPE = ^HH_INFOTYPE;
PTHHInfoType = PHH_INFOTYPE;const
HHWIN_NAVTAB_TOP = 0;
HHWIN_NAVTAB_LEFT = 1;
HHWIN_NAVTAB_BOTTOM = 2;typeTHHWinNavTabPos =(
Top,
Left,
Bottom
);constHH_MAX_TABS = 19; // maximum number of tabs
HH_TAB_CONTENTS = 0;
HH_TAB_INDEX = 1;
HH_TAB_SEARCH = 2;
HH_TAB_BOOKMARKS = 3;
HH_TAB_HISTORY = 4;
HH_TAB_CUSTOM_FIRST = 11;
HH_TAB_CUSTOM_LAST = 19;HH_MAX_TABS_CUSTOM = (ord(HH_TAB_CUSTOM_LAST) - ord(HH_TAB_CUSTOM_FIRST) + 1);// HH_DISPLAY_SEARCH Command Related Structures and Constants HH_FTS_DEFAULT_PROXIMITY = (-1);typeHH_FTS_QUERY = packed record
cbStruct: integer; // Sizeof structure in bytes.
fUniCodeStrings: BOOL; // TRUE if all strings are unicode.
pszSearchQuery: PChar; // String containing the search query.
iProximity: integer; // Word proximity.
fStemmedSearch: BOOL; // TRUE for StemmedSearch only.
fTitleOnly: BOOL; // TRUE for Title search only.
fExecute: BOOL; // TRUE to initiate the search.
pszWindow: PChar; // Window to display in
end;PHH_FTS_QUERY = ^HH_FTS_QUERY;
THHFTSQuery = HH_FTS_QUERY;
PHHFTSQuery = ^HH_FTS_QUERY;// HH_WINTYPE StructureHH_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: PChar; // 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: PChar; // 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 create window
hwndCaller: HWND; // OUT: who called this window paInfoTypes: PHH_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: PChar; // IN: Location of the table of contents file
pszIndex: PChar; // IN: Location of the index file
pszFile: PChar; // IN: Default location of the html file
pszHome: PChar; // 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 + 1] 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: PChar; // Text for HHWIN_BUTTON_JUMP1
pszJump2: PChar; // Text for HHWIN_BUTTON_JUMP2
pszUrlJump1: PChar; // URL for HHWIN_BUTTON_JUMP1
pszUrlJump2: PChar; // URL for HHWIN_BUTTON_JUMP2
rcMinSize: TRect; // Minimum size for window (ignored in version 1)
cbInfoTypes: integer; // size of paInfoTypes;
pszCustomTabs: PChar; // multiple zero-terminated strings
end;THHWinType = HH_WINTYPE;
PHHWintype = ^HH_WINTYPE;HHNNAVCOMPLETE = packed record
hdr : TNMHdr;
pszUrl : PChar; // Multi-byte, null-terminated string
end;PHHNNavComplete = ^HHNNAVCOMPLETE;
THHNNavComplete = HHNNAVCOMPLETE;
THHActTypes = (
HHACT_TAB_CONTENTS,
HHACT_TAB_INDEX,
HHACT_TAB_SEARCH,
HHACT_TAB_HISTORY,
HHACT_TAB_FAVORITES,
HHACT_EXPAND,
HHACT_CONTRACT,
HHACT_BACK,
HHACT_FORWARD,
HHACT_STOP,
HHACT_REFRESH,
HHACT_HOME,
HHACT_SYNC,
HHACT_OPTIONS,
HHACT_PRINT,
HHACT_HIGHLIGHT,
HHACT_CUSTOMIZE,
HHACT_JUMP1,
HHACT_JUMP2,
HHACT_ZOOM,
HHACT_TOC_NEXT,
HHACT_TOC_PREV,
HHACT_NOTES,
HHACT_LAST_ENUM
);HHNTRACK = packed record
hdr: TNMHdr;
pszCurUrl: PChar; // Multi-byte, null-terminated string
idAction: THHActTypes; // HHACT_ value
phhWinType: ^HH_WINTYPE; // Current window type structure
end;THHNTrack = HHNTRACK;
PHHNTRACK = ^HHNTRACK;
type THtmlHelp = function(hwndCaller : THandle; pszFile : PChar; uCommand : cardinal; dwData : longint) : integer; stdcall;
function HtmlHelp(hwndCaller : THandle; pszFile : string; uCommand : cardinal; dwData : longint) : integer;implementationconst
// Use the following for GetProcAddress to load from hhctrl.ocx
ATOM_HTMLHELP_API_ANSI = PChar(DWORD(WORD(14)));
ATOM_HTMLHELP_API_UNICODE = PChar(DWORD(WORD(15)));var
HtmlHelpProc : THtmlHelp;
HHCtrlHandle : THandle;(*******************************************************************************
* HtmlHelp *
*******************************************************************************){$IFDEF TRIAL}
const
HH_CTRLOCX_ERROR = 'Unable to load "HHCtrl.ocx" library !!!'+ #13#10
+ 'Press OK Button to download and install the latest version'+ #13#10
+ 'of the HTML Help Workshop from the Microsoft Web Site.';
var
EF: Boolean;
{$ENDIF}function HtmlHelp;
begin
Result := -1;
if (not Assigned(HtmlHelpProc)) then begin
HHCtrlHandle := LoadLibrary('HHCtrl.ocx');
if (HHCtrlHandle <> 0) then
HtmlHelpProc := GetProcAddress(HHCtrlHandle, 'HtmlHelpA');
end;
if (not Assigned(HtmlHelpProc)) then begin
beep(1000,100);
{$IFDEF TRIAL}
if not EF and (MessageDlg(HH_CTRLOCX_ERROR,mtError,[mbOk,mbCancel],0) = mrOK) then begin
ShellExecute(0,'open','http://msdn.microsoft.com/workshop/author/htmlhelp/default.asp',nil,nil,SW_SHOWNORMAL);
EF := True;
end;
{$ENDIF}
end
else
Result := HtmlHelpProc(hwndCaller, PChar(pszFile), uCommand, dwData);
end;initialization
begin
end;finalization
begin
if (HHCtrlHandle <> 0) then FreeLibrary(HHCtrlHandle);
end;end.
* igHHInt.pas *
* HTML Help API unit, translated from HtmlHelp.h by Igor Glukhov, developer of *
* ProHelp for Delphi & C++Builder. *
* Using ProHelp you can make your app's context-sensitive help as professional *
* as it can be without additional coding. *
* Last Update: May 19, 1999 *
* Internet: http://www.igweb.pair.com *
* Email: [email protected] *
* Fell free to contact us. *
* HTML HELP home page: *
* http://msdn.microsoft.com/workshop/author/htmlhelp/default.asp *
*******************************************************************************){*************************** CUSTOMISATION SECTION **************************}{$DEFINE TRIAL} //Comment or delete this string to disable the Error Message //property and warning message.{******************************************************************************}
interfaceuses Windows,Graphics,Dialogs
{$IFDEF TRIAL}
,ShellApi,Controls
{$ENDIF}
;// Commands to pass to HtmlHelp()
constHH_DISPLAY_TOPIC = $0000;
HH_HELP_FINDER = $0000; // WinHelp equivalent
HH_DISPLAY_TOC = $0001; // Selects the TOC tab in the Navigation pane
HH_DISPLAY_INDEX = $0002; // Selects the Index tab in the Navigation pane
HH_DISPLAY_SEARCH = $0003; // Selects the Search tab in the Navigation pane
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_ADD_NAV_UI = $000A; // not currently implemented
HH_ADD_BUTTON = $000B; // not currently implemented
HH_GETBROWSER_APP = $000C; // not currently implemented
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_SET_GUID = $001A; // For Microsoft Installer -- dwData is a pointer to the GUID string
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)
HH_INTERNAL = $00FF; // Used internally.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 marginHHWIN_PARAM_PROPERTIES = (1 shl 1); // valid fsWinProperties
HHWIN_PARAM_STYLES = (1 shl 2); // valid dwStyles
HHWIN_PARAM_EXSTYLES = (1 shl 3); // valid dwExStyles
HHWIN_PARAM_RECT = (1 shl 4); // valid rcWindowPos
HHWIN_PARAM_NAV_WIDTH = (1 shl 5); // valid iNavWidth
HHWIN_PARAM_SHOWSTATE = (1 shl 6); // valid nShowState
HHWIN_PARAM_INFOTYPES = (1 shl 7); // valid apInfoTypes
HHWIN_PARAM_TB_FLAGS = (1 shl 8); // valid fsToolBarFlags
HHWIN_PARAM_EXPANSION = (1 shl 9); // valid fNotExpanded
HHWIN_PARAM_TABPOS = (1 shl 10); // valid tabpos
HHWIN_PARAM_TABORDER = (1 shl 11); // valid taborder
HHWIN_PARAM_HISTORY_COUNT = (1 shl 12); // valid cHistory
HHWIN_PARAM_CUR_TAB = (1 shl 13); // valid curNavTypeHHWIN_BUTTON_EXPAND = (1 shl 1); // Expand/contract button
HHWIN_BUTTON_BACK = (1 shl 2); // Back button
HHWIN_BUTTON_FORWARD = (1 shl 3); // Forward button
HHWIN_BUTTON_STOP = (1 shl 4); // Stop button
HHWIN_BUTTON_REFRESH = (1 shl 5); // Refresh button
HHWIN_BUTTON_HOME = (1 shl 6); // Home button
HHWIN_BUTTON_BROWSE_FWD = (1 shl 7); // not implemented
HHWIN_BUTTON_BROWSE_BCK = (1 shl 8); // not implemented
HHWIN_BUTTON_NOTES = (1 shl 9); // not implemented
HHWIN_BUTTON_CONTENTS = (1 shl 10); // not implemented
HHWIN_BUTTON_SYNC = (1 shl 11); // Sync button
HHWIN_BUTTON_OPTIONS = (1 shl 12); // Options button
HHWIN_BUTTON_PRINT = (1 shl 13); // Print button
HHWIN_BUTTON_INDEX = (1 shl 14); // not implemented
HHWIN_BUTTON_SEARCH = (1 shl 15); // not implemented
HHWIN_BUTTON_HISTORY = (1 shl 16); // not implemented
HHWIN_BUTTON_BOOKMARKS = (1 shl 17); // not implemented
HHWIN_BUTTON_JUMP1 = (1 shl 18);
HHWIN_BUTTON_JUMP2 = (1 shl 19);
HHWIN_BUTTON_ZOOM = (1 shl 20);
HHWIN_BUTTON_TOC_NEXT = (1 shl 21);
HHWIN_BUTTON_TOC_PREV = (1 shl 22);HHWIN_DEF_BUTTONS = HHWIN_BUTTON_EXPAND
or HHWIN_BUTTON_BACK
or HHWIN_BUTTON_OPTIONS
or HHWIN_BUTTON_PRINT;// Button IDsIDTB_EXPAND = 200;
IDTB_CONTRACT = 201;
IDTB_STOP = 202;
IDTB_REFRESH = 203;
IDTB_BACK = 204;
IDTB_HOME = 205;
IDTB_SYNC = 206;
IDTB_PRINT = 207;
IDTB_OPTIONS = 208;
IDTB_FORWARD = 209;
IDTB_NOTES = 210; // not implemented
IDTB_BROWSE_FWD = 211;
IDTB_BROWSE_BACK = 212;
IDTB_CONTENTS = 213; // not implemented
IDTB_INDEX = 214; // not implemented
IDTB_SEARCH = 215; // not implemented
IDTB_HISTORY = 216; // not implemented
IDTB_BOOKMARKS = 217; // not implemented
IDTB_JUMP1 = 218;
IDTB_JUMP2 = 219;
IDTB_CUSTOMIZE = 221;
IDTB_ZOOM = 222;
IDTB_TOC_NEXT = 223;
IDTB_TOC_PREV = 224;// Notification codesHHN_FIRST = -860;
HHN_LAST = -879;HHN_NAVCOMPLETE = (HHN_FIRST-0);
HHN_TRACK = (HHN_FIRST-1);
HHN_WINDOW_CREATE = (HHN_FIRST-2);typeHH_POPUP = packed record
cbStruct: integer; // sizeof this structure
hinst: HINST; // instance handle for string resource
idString: cardinal; // string resource id, or text id if pszFile is specified in HtmlHelp call
pszText: PChar; // used if idString is zero
pt: TPoint; // top center of popup window
clrForeground: TColor; // use -1 for default
clrBackground: TColor; // use -1 for default
rcMargins: TRect; // amount of space between edges of window and text, -1 for each member to ignore
pszFont: PChar; // facename, point size, char set, BOLD ITALIC UNDERLINE
end;
THHPopUp = HH_POPUP;HH_AKLINK = packed record
cbStruct: integer; // sizeof this structure
fReserved: BOOL; // must be FALSE (really!)
pszKeywords: PChar; // semi-colon separated keywords
pszUrl: PChar; // URL to jump to if no keywords found (may be NULL)
pszMsgText: PChar; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
pszMsgTitle: PChar; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
pszWindow: PChar; // Window to display URL in
fIndexOnFail: Bool; // Displays index if keyword lookup fails.
end;
THHAKLink = HH_AKLINK;constHHWIN_NAVTYPE_TOC = 0;
HHWIN_NAVTYPE_INDEX = 1;
HHWIN_NAVTYPE_SEARCH = 2;
HHWIN_NAVTYPE_BOOKMARKS = 3;
HHWIN_NAVTYPE_HISTORY = 4; // not implemented
HHWIN_NAVTYPE_AUTHOR = 5;
HHWIN_NAVTYPE_CUSTOM_FIRST = 11;// Information typesIT_INCLUSIVE = 0;
IT_EXCLUSIVE = 1;
IT_HIDDEN = 2;typeTITType = (
ITInclusive,
ITExclusive,
ITHidden
);HH_ENUM_IT = packed record
cbStruct: integer; // size of this structure
iType: integer; // the type of the information type ie. Inclusive, Exclusive, or Hidden
// iType: TITType; // the type of the information type ie. Inclusive, Exclusive, or Hidden
pszCatName: PChar; // Set to the name of the Category to enumerate the info types in a category; else NULL
pszITName: PChar; // volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeing
pszITDescription: PChar; // volitile pointer to the description of the infotype.
end;THHEnumIT = HH_ENUM_IT;
PHH_ENUM_IT =^HH_ENUM_IT;
PTHHEnumIT = PHH_ENUM_IT;HH_ENUM_CAT = packed record
cbStruct: integer; // size of this structure
pszCatName: PChar; // volitile pointer to the category name
pszCatDescription: PChar; // volitile pointer to the category description
end;THHEnumCat = HH_ENUM_CAT;
PTHH_ENUM_CAT = ^HH_ENUM_CAT;
PTHHEnumCat = PTHH_ENUM_CAT;HH_SET_INFOTYPE = packed record
cbStruct: integer; // the size of this structure
pszCatName: PChar; // the name of the category, if any, the InfoType is a member of.
pszInfoTypeName: PChar; // the name of the info type to add to the filter
end;THHSetInfoType = HH_SET_INFOTYPE;
PHH_SET_INFOTYPE = ^HH_SET_INFOTYPE;
PTHHSetInfoType = PHH_SET_INFOTYPE;HH_INFOTYPE = DWORD;
THHInfoType = DWORD;
PHH_INFOTYPE = ^HH_INFOTYPE;
PTHHInfoType = PHH_INFOTYPE;const
HHWIN_NAVTAB_TOP = 0;
HHWIN_NAVTAB_LEFT = 1;
HHWIN_NAVTAB_BOTTOM = 2;typeTHHWinNavTabPos =(
Top,
Left,
Bottom
);constHH_MAX_TABS = 19; // maximum number of tabs
HH_TAB_CONTENTS = 0;
HH_TAB_INDEX = 1;
HH_TAB_SEARCH = 2;
HH_TAB_BOOKMARKS = 3;
HH_TAB_HISTORY = 4;
HH_TAB_CUSTOM_FIRST = 11;
HH_TAB_CUSTOM_LAST = 19;HH_MAX_TABS_CUSTOM = (ord(HH_TAB_CUSTOM_LAST) - ord(HH_TAB_CUSTOM_FIRST) + 1);// HH_DISPLAY_SEARCH Command Related Structures and Constants HH_FTS_DEFAULT_PROXIMITY = (-1);typeHH_FTS_QUERY = packed record
cbStruct: integer; // Sizeof structure in bytes.
fUniCodeStrings: BOOL; // TRUE if all strings are unicode.
pszSearchQuery: PChar; // String containing the search query.
iProximity: integer; // Word proximity.
fStemmedSearch: BOOL; // TRUE for StemmedSearch only.
fTitleOnly: BOOL; // TRUE for Title search only.
fExecute: BOOL; // TRUE to initiate the search.
pszWindow: PChar; // Window to display in
end;PHH_FTS_QUERY = ^HH_FTS_QUERY;
THHFTSQuery = HH_FTS_QUERY;
PHHFTSQuery = ^HH_FTS_QUERY;// HH_WINTYPE StructureHH_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: PChar; // 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: PChar; // 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 create window
hwndCaller: HWND; // OUT: who called this window paInfoTypes: PHH_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: PChar; // IN: Location of the table of contents file
pszIndex: PChar; // IN: Location of the index file
pszFile: PChar; // IN: Default location of the html file
pszHome: PChar; // 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 + 1] 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: PChar; // Text for HHWIN_BUTTON_JUMP1
pszJump2: PChar; // Text for HHWIN_BUTTON_JUMP2
pszUrlJump1: PChar; // URL for HHWIN_BUTTON_JUMP1
pszUrlJump2: PChar; // URL for HHWIN_BUTTON_JUMP2
rcMinSize: TRect; // Minimum size for window (ignored in version 1)
cbInfoTypes: integer; // size of paInfoTypes;
pszCustomTabs: PChar; // multiple zero-terminated strings
end;THHWinType = HH_WINTYPE;
PHHWintype = ^HH_WINTYPE;HHNNAVCOMPLETE = packed record
hdr : TNMHdr;
pszUrl : PChar; // Multi-byte, null-terminated string
end;PHHNNavComplete = ^HHNNAVCOMPLETE;
THHNNavComplete = HHNNAVCOMPLETE;
THHActTypes = (
HHACT_TAB_CONTENTS,
HHACT_TAB_INDEX,
HHACT_TAB_SEARCH,
HHACT_TAB_HISTORY,
HHACT_TAB_FAVORITES,
HHACT_EXPAND,
HHACT_CONTRACT,
HHACT_BACK,
HHACT_FORWARD,
HHACT_STOP,
HHACT_REFRESH,
HHACT_HOME,
HHACT_SYNC,
HHACT_OPTIONS,
HHACT_PRINT,
HHACT_HIGHLIGHT,
HHACT_CUSTOMIZE,
HHACT_JUMP1,
HHACT_JUMP2,
HHACT_ZOOM,
HHACT_TOC_NEXT,
HHACT_TOC_PREV,
HHACT_NOTES,
HHACT_LAST_ENUM
);HHNTRACK = packed record
hdr: TNMHdr;
pszCurUrl: PChar; // Multi-byte, null-terminated string
idAction: THHActTypes; // HHACT_ value
phhWinType: ^HH_WINTYPE; // Current window type structure
end;THHNTrack = HHNTRACK;
PHHNTRACK = ^HHNTRACK;
type THtmlHelp = function(hwndCaller : THandle; pszFile : PChar; uCommand : cardinal; dwData : longint) : integer; stdcall;
function HtmlHelp(hwndCaller : THandle; pszFile : string; uCommand : cardinal; dwData : longint) : integer;implementationconst
// Use the following for GetProcAddress to load from hhctrl.ocx
ATOM_HTMLHELP_API_ANSI = PChar(DWORD(WORD(14)));
ATOM_HTMLHELP_API_UNICODE = PChar(DWORD(WORD(15)));var
HtmlHelpProc : THtmlHelp;
HHCtrlHandle : THandle;(*******************************************************************************
* HtmlHelp *
*******************************************************************************){$IFDEF TRIAL}
const
HH_CTRLOCX_ERROR = 'Unable to load "HHCtrl.ocx" library !!!'+ #13#10
+ 'Press OK Button to download and install the latest version'+ #13#10
+ 'of the HTML Help Workshop from the Microsoft Web Site.';
var
EF: Boolean;
{$ENDIF}function HtmlHelp;
begin
Result := -1;
if (not Assigned(HtmlHelpProc)) then begin
HHCtrlHandle := LoadLibrary('HHCtrl.ocx');
if (HHCtrlHandle <> 0) then
HtmlHelpProc := GetProcAddress(HHCtrlHandle, 'HtmlHelpA');
end;
if (not Assigned(HtmlHelpProc)) then begin
beep(1000,100);
{$IFDEF TRIAL}
if not EF and (MessageDlg(HH_CTRLOCX_ERROR,mtError,[mbOk,mbCancel],0) = mrOK) then begin
ShellExecute(0,'open','http://msdn.microsoft.com/workshop/author/htmlhelp/default.asp',nil,nil,SW_SHOWNORMAL);
EF := True;
end;
{$ENDIF}
end
else
Result := HtmlHelpProc(hwndCaller, PChar(pszFile), uCommand, dwData);
end;initialization
begin
end;finalization
begin
if (HHCtrlHandle <> 0) then FreeLibrary(HHCtrlHandle);
end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货