; _______________________________________________________________________________________
;|                                                                                       |
;| ..::FreshLib::..  Free, open source. Licensed under "BSD 2-clause" license."          |
;|_______________________________________________________________________________________|
;
;  Description: HtmlHelp constants and structures.
;
;  Target OS: Win32
;
;  Dependencies:
;
;  Notes:
;_________________________________________________________________________________________

; Commands to pass to HtmlHelp()

HH_DISPLAY_TOPIC        = 0x0000
HH_HELP_FINDER          = 0x0000  ; WinHelp equivalent
HH_DISPLAY_TOC          = 0x0001
HH_DISPLAY_INDEX        = 0x0002
HH_DISPLAY_SEARCH       = 0x0003
HH_SET_WIN_TYPE         = 0x0004
HH_GET_WIN_TYPE         = 0x0005
HH_GET_WIN_HANDLE       = 0x0006
HH_ENUM_INFO_TYPE       = 0x0007  ; Get Info type name, call repeatedly to enumerate, -1 at end
HH_SET_INFO_TYPE        = 0x0008  ; Add Info type to filter.
HH_SYNC                 = 0x0009
HH_RESERVED1            = 0x000A
HH_RESERVED2            = 0x000B
HH_RESERVED3            = 0x000C
HH_KEYWORD_LOOKUP       = 0x000D
HH_DISPLAY_TEXT_POPUP   = 0x000E  ; display string resource id or text in a popup window
HH_HELP_CONTEXT         = 0x000F  ; display mapped numeric value in dwData
HH_TP_HELP_CONTEXTMENU  = 0x0010  ; text popup help, same as WinHelp HELP_CONTEXTMENU
HH_TP_HELP_WM_HELP      = 0x0011  ; text popup help, same as WinHelp HELP_WM_HELP
HH_CLOSE_ALL            = 0x0012  ; close all windows opened directly or indirectly by the caller
HH_ALINK_LOOKUP         = 0x0013  ; ALink version of HH_KEYWORD_LOOKUP
HH_GET_LAST_ERROR       = 0x0014  ; not currently implemented // See HHERROR.h
HH_ENUM_CATEGORY        = 0x0015  ; Get category name, call repeatedly to enumerate, -1 at end
HH_ENUM_CATEGORY_IT     = 0x0016  ; Get category info type members, call repeatedly to enumerate, -1 at end
HH_RESET_IT_FILTER      = 0x0017  ; Clear the info type filter of all info types.
HH_SET_INCLUSIVE_FILTER = 0x0018  ; set inclusive filtering method for untyped topics to be included in display
HH_SET_EXCLUSIVE_FILTER = 0x0019  ; set exclusive filtering method for untyped topics to be excluded from display
HH_INITIALIZE           = 0x001C  ; Initializes the help system.
HH_UNINITIALIZE         = 0x001D  ; Uninitializes the help system.
HH_PRETRANSLATEMESSAGE  = 0x00fd  ; Pumps messages. (NULL, NULL, MSG*).
HH_SET_GLOBAL_PROPERTY  = 0x00fc  ; 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

HHWIN_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 curNavType

HHWIN_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_FAVORITES      = 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 IDs
IDTB_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_FAVORITES          = 217 ; not implemented
IDTB_JUMP1              = 218
IDTB_JUMP2              = 219
IDTB_CUSTOMIZE          = 221
IDTB_ZOOM               = 222
IDTB_TOC_NEXT           = 223
IDTB_TOC_PREV           = 224

; Notification codes

HHN_FIRST = 0-860
HHN_LAST  = 0-879

HHN_NAVCOMPLETE   = HHN_FIRST-0
HHN_TRACK         = HHN_FIRST-1
HHN_WINDOW_CREATE = HHN_FIRST-2

struct HHN_NOTIFY
    .hdr    dd ?
    .pszUrl dd ? ; Multi-byte, null-terminated string
ends

struct HH_POPUP
    .cbStruct      dd ?     ; sizeof this structure
    .hinst         dd ?     ; instance handle for string resource
    .idString      dd ?     ; string resource id, or text id if pszFile is specified in HtmlHelp call
    .pszText       dd ?     ; used if idString is zero
    .pt            POINT    ; top center of popup window
    .clrForeground dd ?     ; use -1 for default
    .clrBackground dd ?     ; use -1 for default
    .rcMargins     RECT     ; amount of space between edges of window and text, -1 for each member to ignore
    .pszFont       dd ?     ; facename, point size, char set, BOLD ITALIC UNDERLINE
ends

struct HH_AKLINK
    .cbStruct     dd ?     ; sizeof this structure
    .fReserved    dd ?     ; must be FALSE (really!)
    .pszKeywords  dd ?     ; semi-colon separated keywords
    .pszUrl       dd ?     ; URL to jump to if no keywords found (may be NULL)
    .pszMsgText   dd ?     ; Message text to display in MessageBox if pszUrl is NULL and no keyword match
    .pszMsgTitle  dd ?     ; Message text to display in MessageBox if pszUrl is NULL and no keyword match
    .pszWindow    dd ?     ; Window to display URL in
    .fIndexOnFail dd ?     ; Displays index if keyword lookup fails.
ends


HHWIN_NAVTYPE_TOC          = 0
HHWIN_NAVTYPE_INDEX        = 1
HHWIN_NAVTYPE_SEARCH       = 2
HHWIN_NAVTYPE_FAVORITES    = 3
HHWIN_NAVTYPE_HISTORY      = 4  ; not implemented
HHWIN_NAVTYPE_AUTHOR       = 5
HHWIN_NAVTYPE_CUSTOM_FIRST = 11


IT_INCLUSIVE = 0
IT_EXCLUSIVE = 1
IT_HIDDEN    = 2


struct HH_ENUM_IT
    .cbStruct         dd ?       ; size of this structure
    .iType            dd ?       ; the type of the information type ie. Inclusive, Exclusive, or Hidden
    .pszCatName       dd ?       ; Set to the name of the Category to enumerate the info types in a category; else NULL
    .pszITName        dd ?       ; volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeing
    .pszITDescription dd ?       ; volitile pointer to the description of the infotype.
ends

struct HH_ENUM_CAT
    .cbStruct          dd ?     ; size of this structure
    .pszCatName        dd ?     ; volitile pointer to the category name
    .pszCatDescription dd ?     ; volitile pointer to the category description
ends

struct HH_SET_INFOTYPE
    .cbStruct        dd ?        ; the size of this structure
    .pszCatName      dd ?        ; the name of the category, if any, the InfoType is a member of.
    .pszInfoTypeName dd ?        ; the name of the info type to add to the filter
ends


HHWIN_NAVTAB_TOP    = 0
HHWIN_NAVTAB_LEFT   = 1
HHWIN_NAVTAB_BOTTOM = 2


HH_MAX_TABS = 19  ; maximum number of tabs


HH_TAB_CONTENTS     = 0
HH_TAB_INDEX        = 1
HH_TAB_SEARCH       = 2
HH_TAB_FAVORITES    = 3
HH_TAB_HISTORY      = 4
HH_TAB_AUTHOR       = 5
HH_TAB_CUSTOM_FIRST = 11
HH_TAB_CUSTOM_LAST  = HH_MAX_TABS


HH_MAX_TABS_CUSTOM  = HH_TAB_CUSTOM_LAST - HH_TAB_CUSTOM_FIRST + 1

; HH_DISPLAY_SEARCH Command Related Structures and Constants

HH_FTS_DEFAULT_PROXIMITY = -1

struct HH_FTS_QUERY
   .cbStruct        dd ?   ; Sizeof structure in bytes.
   .fUniCodeStrings dd ?   ; TRUE if all strings are unicode.
   .pszSearchQuery  dd ?   ; String containing the search query.
   .iProximity      dd ?   ; Word proximity.
   .fStemmedSearch  dd ?   ; TRUE for StemmedSearch only.
   .fTitleOnly      dd ?   ; TRUE for Title search only.
   .fExecute        dd ?   ; TRUE to initiate the search.
   .pszWindow       dd ?   ; Window to display in
ends

; HH_WINTYPE Structure

struct HH_WINTYPE
    .cbStruct        dd ? ; IN: size of this structure including all Information Types
    .fUniCodeStrings dd ? ; IN/OUT: TRUE if all strings are in UNICODE
    .pszType         dd ? ; IN/OUT: Name of a type of window
    .fsValidMembers  dd ? ; IN: Bit flag of valid members (HHWIN_PARAM_)
    .fsWinProperties dd ? ; IN/OUT: Properties/attributes of the window (HHWIN_)
    .pszCaption      dd ?  ; IN/OUT: Window title
    .dwStyles        dd ?  ; IN/OUT: Window styles
    .dwExStyles      dd ?  ; IN/OUT: Extended Window styles
    .rcWindowPos     RECT  ; IN: Starting position, OUT: current position
    .nShowState      dd ?  ; IN: show state (e.g., SW_SHOW)
    .hwndHelp        dd ?    ; OUT: window handle
    .hwndCaller      dd ?    ; OUT: who called this window
    .paInfoTypes     dd ?    ; IN: Pointer to an array of Information Types
    ; The following members are only valid if HHWIN_PROP_TRI_PANE is set
    .hwndToolBar     dd ?  ; OUT: toolbar window in tri-pane window
    .hwndNavigation  dd ?  ; OUT: navigation window in tri-pane window
    .hwndHTML        dd ?  ; OUT: window displaying HTML in tri-pane window
    .iNavWidth       dd ?  ; IN/OUT: width of navigation window
    .rcHTML          RECT  ; OUT: HTML window coordinates
    .pszToc          dd ?  ; IN: Location of the table of contents file
    .pszIndex        dd ? ; IN: Location of the index file
    .pszFile         dd ? ; IN: Default location of the html file
    .pszHome         dd ? ; IN/OUT: html file to display when Home button is clicked
    .fsToolBarFlags  dd ? ; IN: flags controling the appearance of the toolbar
    .fNotExpanded    dd ? ; IN: TRUE/FALSE to contract or expand, OUT: current state
    .curNavType      dd ? ; IN/OUT: UI to display in the navigational pane
    .tabpos          dd ? ; IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOM
    .idNotify        dd ? ; IN: ID to use for WM_NOTIFY messages
    .tabOrder        rb HH_MAX_TABS + 1    ; IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabs
    .cHistory        dd ? ; IN/OUT: number of history items to keep (default is 30)
    .pszJump1        dd ? ; Text for HHWIN_BUTTON_JUMP1
    .pszJump2        dd ? ; Text for HHWIN_BUTTON_JUMP2
    .pszUrlJump1     dd ? ; URL for HHWIN_BUTTON_JUMP1
    .pszUrlJump2     dd ? ; URL for HHWIN_BUTTON_JUMP2
    .rcMinSize       RECT ; Minimum size for window (ignored in version 1)
    .cbInfoTypes     dd ? ; size of paInfoTypes;
    .pszCustomTabs   dd ? ; multiple zero-terminated strings
ends

HHACT_TAB_CONTENTS  = 0
HHACT_TAB_INDEX     = 1
HHACT_TAB_SEARCH    = 2
HHACT_TAB_HISTORY   = 3
HHACT_TAB_FAVORITES = 4

HHACT_EXPAND    = 0
HHACT_CONTRACT  = 1
HHACT_BACK      = 2
HHACT_FORWARD   = 3
HHACT_STOP      = 4
HHACT_REFRESH   = 5
HHACT_HOME      = 6
HHACT_SYNC      = 7
HHACT_OPTIONS   = 8
HHACT_PRINT     = 9
HHACT_HIGHLIGHT = 10
HHACT_CUSTOMIZE = 11
HHACT_JUMP1     = 12
HHACT_JUMP2     = 13
HHACT_ZOOM      = 14
HHACT_TOC_NEXT  = 15
HHACT_TOC_PREV  = 16
HHACT_NOTES     = 17
HHACT_LAST_ENUM = 18


struct HHNTRACK
    .hdr        dd ?
    .pszCurUrl  dd ?  ; Multi-byte, null-terminated string
    .idAction   dd ?  ; HHACT_ value
    .phhWinType dd ?  ; Current window type structure
ends


HH_GPROPID_SINGLETHREAD=1      ; VARIANT_BOOL: True for single thread
HH_GPROPID_TOOLBAR_MARGIN=2    ; long: Provides a left/right margin around the toolbar.
HH_GPROPID_UI_LANGUAGE=3       ; long: LangId of the UI.
HH_GPROPID_CURRENT_SUBSET=4    ; BSTR: Current subset.
HH_GPROPID_CONTENT_LANGUAGE=5  ; long: LandId for desired content.


struct HH_GLOBAL_PROPERTY
    .id  dd ?
    .var dd ?
ends