1{
2    This file is part of the Free Pascal run time library.
3    Copyright (c) 2009 by Marco van de Voort
4    member of the Free Pascal development team.
5
6    See the file COPYING.FPC, included in this distribution,
7    for details about the copyright.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13    Original copyright statement follows.
14
15/****************************************************************************
16*                                                                           *
17* HtmlHelp.h                                                                *
18*                                                                           *
19* Copyright (c) 1996-1997, Microsoft Corp. All rights reserved.             *
20*                                                                           *
21****************************************************************************/
22}
23
24unit htmlhelp;
25
26interface
27{$ifdef FPC_OS_UNICODE}
28  {$define UNICODE}
29{$endif}
30
31Uses Windows;
32
33const
34// Commands to pass to HtmlHelp()
35
36        HH_DISPLAY_TOPIC         = $0000;
37        HH_HELP_FINDER           = $0000;  // WinHelp equivalent
38        HH_DISPLAY_TOC           = $0001;
39        HH_DISPLAY_INDEX         = $0002;
40        HH_DISPLAY_SEARCH        = $0003;
41        HH_SET_WIN_TYPE          = $0004;
42        HH_GET_WIN_TYPE          = $0005;
43        HH_GET_WIN_HANDLE        = $0006;
44        HH_ENUM_INFO_TYPE        = $0007;  // Get Info type name, call repeatedly to enumerate, -1 at end
45        HH_SET_INFO_TYPE         = $0008;  // Add Info type to filter.
46        HH_SYNC                  = $0009;
47        HH_RESERVED1             = $000A;
48        HH_RESERVED2             = $000B;
49        HH_RESERVED3             = $000C;
50        HH_KEYWORD_LOOKUP        = $000D;
51        HH_DISPLAY_TEXT_POPUP    = $000E;  // display string resource id or text in a popup window
52        HH_HELP_CONTEXT          = $000F;  // display mapped numeric value in dwData
53        HH_TP_HELP_CONTEXTMENU   = $0010;  // text popup help, same as WinHelp HELP_CONTEXTlMENU
54        HH_TP_HELP_WM_HELP       = $0011;  // text popup help, same as WinHelp HELP_WM_HELP
55        HH_CLOSE_ALL             = $0012;  // close all windows opened directly or indirectly by the caller
56        HH_ALINK_LOOKUP          = $0013;  // ALink version of HH_KEYWORD_LOOKUP
57        HH_GET_LAST_ERROR        = $0014;  // not currently implemented // See HHERROR.h
58        HH_ENUM_CATEGORY         = $0015;	// Get category name, call repeatedly to enumerate, -1 at end
59        HH_ENUM_CATEGORY_IT      = $0016;  // Get category info type members, call repeatedly to enumerate, -1 at end
60        HH_RESET_IT_FILTER       = $0017;  // Clear the info type filter of all info types.
61        HH_SET_INCLUSIVE_FILTER  = $0018;  // set inclusive filtering method for untyped topics to be included in display
62        HH_SET_EXCLUSIVE_FILTER  = $0019;  // set exclusive filtering method for untyped topics to be excluded from display
63        HH_INITIALIZE            = $001C;  // Initializes the help system.
64        HH_UNINITIALIZE          = $001D;  // Uninitializes the help system.
65        HH_SET_QUERYSERVICE      = $001E;  // Set the Host IQueryService interface
66        HH_PRETRANSLATEMESSAGE   = $00fd;  // Pumps messages. (NULL, NULL, MSG*).
67        HH_SET_GLOBAL_PROPERTY   = $00fc;  // Set a global property. (NULL, NULL, HH_GPROP)
68        HH_SAFE_DISPLAY_TOPIC    = $0020;  // private addition to the interface for InternetExplorer.
69
70        HHWIN_PROP_TAB_AUTOHIDESHOW = (1 shl 0);    // Automatically hide/show tri-pane window
71        HHWIN_PROP_ONTOP            = (1 shl 1);    // Top-most window
72        HHWIN_PROP_NOTITLEBAR       = (1 shl 2);    // no title bar
73        HHWIN_PROP_NODEF_STYLES     = (1 shl 3);    // no default window styles (only HH_WINTYPE.dwStyles)
74        HHWIN_PROP_NODEF_EXSTYLES   = (1 shl 4);    // no default extended window styles (only HH_WINTYPE.dwExStyles)
75        HHWIN_PROP_TRI_PANE         = (1 shl 5);    // use a tri-pane window
76        HHWIN_PROP_NOTB_TEXT        = (1 shl 6);    // no text on toolbar buttons
77        HHWIN_PROP_POST_QUIT        = (1 shl 7);    // post WM_QUIT message when window closes
78        HHWIN_PROP_AUTO_SYNC        = (1 shl 8);    // automatically ssync contents and index
79        HHWIN_PROP_TRACKING         = (1 shl 9);    // send tracking notification messages
80        HHWIN_PROP_TAB_SEARCH       = (1 shl 10);   // include search tab in navigation pane
81        HHWIN_PROP_TAB_HISTORY      = (1 shl 11);   // include history tab in navigation pane
82        HHWIN_PROP_TAB_FAVORITES    = (1 shl 12);   // include favorites tab in navigation pane
83        HHWIN_PROP_CHANGE_TITLE     = (1 shl 13);   // Put current HTML title in title bar
84        HHWIN_PROP_NAV_ONLY_WIN     = (1 shl 14);   // Only display the navigation window
85        HHWIN_PROP_NO_TOOLBAR       = (1 shl 15);   // Don't display a toolbar
86        HHWIN_PROP_MENU             = (1 shl 16);   // Menu
87        HHWIN_PROP_TAB_ADVSEARCH    = (1 shl 17);   // Advanced FTS UI.
88        HHWIN_PROP_USER_POS         = (1 shl 18);   // After initial creation, user controls window size/position
89        HHWIN_PROP_TAB_CUSTOM1      = (1 shl 19);   // Use custom tab #1
90        HHWIN_PROP_TAB_CUSTOM2      = (1 shl 20);   // Use custom tab #2
91        HHWIN_PROP_TAB_CUSTOM3      = (1 shl 21);   // Use custom tab #3
92        HHWIN_PROP_TAB_CUSTOM4      = (1 shl 22);   // Use custom tab #4
93        HHWIN_PROP_TAB_CUSTOM5      = (1 shl 23);   // Use custom tab #5
94        HHWIN_PROP_TAB_CUSTOM6      = (1 shl 24);   // Use custom tab #6
95        HHWIN_PROP_TAB_CUSTOM7      = (1 shl 25);   // Use custom tab #7
96        HHWIN_PROP_TAB_CUSTOM8      = (1 shl 26);   // Use custom tab #8
97        HHWIN_PROP_TAB_CUSTOM9      = (1 shl 27);   // Use custom tab #9
98        HHWIN_TB_MARGIN             = (1 shl 28);   // the window type has a margin
99
100        HHWIN_PARAM_PROPERTIES      = (1 shl 1);    // valid fsWinProperties
101        HHWIN_PARAM_STYLES          = (1 shl 2);    // valid dwStyles
102        HHWIN_PARAM_EXSTYLES        = (1 shl 3);    // valid dwExStyles
103        HHWIN_PARAM_RECT            = (1 shl 4);    // valid rcWindowPos
104        HHWIN_PARAM_NAV_WIDTH       = (1 shl 5);    // valid iNavWidth
105        HHWIN_PARAM_SHOWSTATE       = (1 shl 6);    // valid nShowState
106        HHWIN_PARAM_INFOTYPES       = (1 shl 7);    // valid apInfoTypes
107        HHWIN_PARAM_TB_FLAGS        = (1 shl 8);    // valid fsToolBarFlags
108        HHWIN_PARAM_EXPANSION       = (1 shl 9);    // valid fNotExpanded
109        HHWIN_PARAM_TABPOS          = (1 shl 10);   // valid tabpos
110        HHWIN_PARAM_TABORDER        = (1 shl 11);   // valid taborder
111        HHWIN_PARAM_HISTORY_COUNT   = (1 shl 12);   // valid cHistory
112        HHWIN_PARAM_CUR_TAB         = (1 shl 13);   // valid curNavType
113
114        HHWIN_BUTTON_EXPAND         = (1 shl 1);    // Expand/contract button
115        HHWIN_BUTTON_BACK           = (1 shl 2);    // Back button
116        HHWIN_BUTTON_FORWARD        = (1 shl 3);    // Forward button
117        HHWIN_BUTTON_STOP           = (1 shl 4);    // Stop button
118        HHWIN_BUTTON_REFRESH        = (1 shl 5);    // Refresh button
119        HHWIN_BUTTON_HOME           = (1 shl 6);    // Home button
120        HHWIN_BUTTON_BROWSE_FWD     = (1 shl 7);    // not implemented
121        HHWIN_BUTTON_BROWSE_BCK     = (1 shl 8);    // not implemented
122        HHWIN_BUTTON_NOTES          = (1 shl 9);    // not implemented
123        HHWIN_BUTTON_CONTENTS       = (1 shl 10);   // not implemented
124        HHWIN_BUTTON_SYNC           = (1 shl 11);   // Sync button
125        HHWIN_BUTTON_OPTIONS        = (1 shl 12);   // Options button
126        HHWIN_BUTTON_PRINT          = (1 shl 13);   // Print button
127        HHWIN_BUTTON_INDEX          = (1 shl 14);   // not implemented
128        HHWIN_BUTTON_SEARCH         = (1 shl 15);   // not implemented
129        HHWIN_BUTTON_HISTORY        = (1 shl 16);   // not implemented
130        HHWIN_BUTTON_FAVORITES      = (1 shl 17);   // not implemented
131        HHWIN_BUTTON_JUMP1          = (1 shl 18);
132        HHWIN_BUTTON_JUMP2          = (1 shl 19);
133        HHWIN_BUTTON_ZOOM           = (1 shl 20);
134        HHWIN_BUTTON_TOC_NEXT       = (1 shl 21);
135        HHWIN_BUTTON_TOC_PREV       = (1 shl 22);
136
137
138// Button IDs
139
140        IDTB_EXPAND             = 200;
141        IDTB_CONTRACT           = 201;
142        IDTB_STOP               = 202;
143        IDTB_REFRESH            = 203;
144        IDTB_BACK               = 204;
145        IDTB_HOME               = 205;
146        IDTB_SYNC               = 206;
147        IDTB_PRINT              = 207;
148        IDTB_OPTIONS            = 208;
149        IDTB_FORWARD            = 209;
150        IDTB_NOTES              = 210;  // not implemented
151        IDTB_BROWSE_FWD         = 211;
152        IDTB_BROWSE_BACK        = 212;
153        IDTB_CONTENTS           = 213;  // not implemented
154        IDTB_INDEX              = 214;  // not implemented
155        IDTB_SEARCH             = 215;  // not implemented
156        IDTB_HISTORY            = 216;  // not implemented
157        IDTB_FAVORITES          = 217;  // not implemented
158        IDTB_JUMP1              = 218;
159        IDTB_JUMP2              = 219;
160        IDTB_CUSTOMIZE          = 221;
161        IDTB_ZOOM               = 222;
162        IDTB_TOC_NEXT           = 223;
163        IDTB_TOC_PREV           = 224;
164
165// Notification codes
166
167        HHN_FIRST       = longword (0)-longword(860); // (0U-860U)
168        HHN_LAST        = longword (0)-longword(879); // (0U-879U)
169
170        HHN_NAVCOMPLETE   = (HHN_FIRST-0);
171        HHN_TRACK         = (HHN_FIRST-1);
172        HHN_WINDOW_CREATE = (HHN_FIRST-2);
173
174        HHWIN_DEF_BUTTONS           =       (HHWIN_BUTTON_EXPAND  or
175                                             HHWIN_BUTTON_BACK    or
176                                             HHWIN_BUTTON_OPTIONS or
177                                             HHWIN_BUTTON_PRINT);
178
179        HHWIN_NAVTYPE_TOC          = 0;
180        HHWIN_NAVTYPE_INDEX        = 1;
181        HHWIN_NAVTYPE_SEARCH       = 2;
182        HHWIN_NAVTYPE_FAVORITES    = 3;
183        HHWIN_NAVTYPE_HISTORY      = 4; // not implemented
184        HHWIN_NAVTYPE_AUTHOR       = 5;
185        HHWIN_NAVTYPE_CUSTOM_FIRST = 11;
186        IT_INCLUSIVE               = 0;
187        IT_EXCLUSIVE               = 1;
188        IT_HIDDEN                  = 2;
189
190        HHWIN_NAVTAB_TOP           = 0;
191        HHWIN_NAVTAB_LEFT          = 1;
192        HHWIN_NAVTAB_BOTTOM        = 2;
193
194        HH_MAX_TABS                = 19;  // maximum number of tabs
195
196        HH_TAB_CONTENTS            = 0;
197        HH_TAB_INDEX               = 1;
198        HH_TAB_SEARCH              = 2;
199        HH_TAB_FAVORITES           = 3;
200        HH_TAB_HISTORY             = 4;
201        HH_TAB_AUTHOR              = 5;
202
203        HH_TAB_CUSTOM_FIRST        = 11;
204        HH_TAB_CUSTOM_LAST         = HH_MAX_TABS;
205
206        HH_MAX_TABS_CUSTOM         = (HH_TAB_CUSTOM_LAST - HH_TAB_CUSTOM_FIRST + 1);
207
208// HH_DISPLAY_SEARCH Command Related Structures and Constants
209
210        HH_FTS_DEFAULT_PROXIMITY   = (-1);
211
212        HHACT_TAB_CONTENTS         = 0;
213        HHACT_TAB_INDEX            = 1;
214        HHACT_TAB_SEARCH           = 2;
215        HHACT_TAB_HISTORY          = 3;
216        HHACT_TAB_FAVORITES        = 4;
217
218        HHACT_EXPAND               = 5;
219        HHACT_CONTRACT             = 6;
220        HHACT_BACK                 = 7;
221        HHACT_FORWARD              = 8;
222        HHACT_STOP                 = 9;
223        HHACT_REFRESH              = 10;
224        HHACT_HOME                 = 11;
225        HHACT_SYNC                 = 12;
226        HHACT_OPTIONS              = 13;
227        HHACT_PRINT                = 14;
228        HHACT_HIGHLIGHT            = 15;
229        HHACT_CUSTOMIZE            = 16;
230        HHACT_JUMP1                = 17;
231        HHACT_JUMP2                = 18;
232        HHACT_ZOOM                 = 19;
233        HHACT_TOC_NEXT             = 20;
234        HHACT_TOC_PREV             = 21;
235        HHACT_NOTES                = 22;
236
237        HHACT_LAST_ENUM            = 23;
238
239  const
240    External_library='hhctrl.ocx'; {Setup as you need}
241
242  { Pointers to basic pascal types, inserted by h2pas conversion program.}
243
244Type
245
246     PtagHHN_NOTIFY = ^tagHHN_NOTIFY;
247     tagHHN_NOTIFY = packed record
248          hdr : NMHDR;
249          pszUrl : PCSTR;                 { Multi-byte, null-terminated string }
250       end;
251     HHN_NOTIFY = tagHHN_NOTIFY;
252     PHHN_NOTIFY = ^HHN_NOTIFY;
253
254     PtagHH_POPUP = ^tagHH_POPUP;
255     tagHH_POPUP = packed record
256          cbStruct : longint;             { sizeof this structure }
257          hinst : HINST {ANCE};              { instance handle for string resource }
258          idString : UINT;                { string resource id, or text id if pszFile is specified in HtmlHelp call }
259          pszText : LPCTSTR;              { used if idString is zero }
260          pt : POINT;                     { top center of popup window }
261          clrForeground : COLORREF;       { use -1 for default }
262          clrBackground : COLORREF;       { use -1 for default }
263          rcMargins : RECT;               { amount of space between edges of window and text, -1 for each member to ignore }
264          pszFont : LPCTSTR;              { facename, point size, char set, BOLD ITALIC UNDERLINE }
265       end;
266     HH_POPUP = tagHH_POPUP;
267     PHH_POPUP = ^HH_POPUP;
268
269     PtagHH_AKLINK = ^tagHH_AKLINK;
270     tagHH_AKLINK = packed record
271          cbStruct : longint;              { sizeof this structure }
272          fReserved : BOOL;                { must be FALSE (really!) }
273          pszKeywords : LPCTSTR;           { semi-colon separated keywords }
274          pszUrl : LPCTSTR;                { URL to jump to if no keywords found (may be NULL) }
275          pszMsgText : LPCTSTR;            { Message text to display in MessageBox if pszUrl is NULL and no keyword match }
276          pszMsgTitle : LPCTSTR;           { Message text to display in MessageBox if pszUrl is NULL and no keyword match }
277          pszWindow : LPCTSTR;             { Window to display URL in }
278          fIndexOnFail : BOOL;             { Displays index if keyword lookup fails. }
279       end;
280     HH_AKLINK = tagHH_AKLINK;
281     PHH_AKLINK = ^HH_AKLINK;
282
283     PtagHH_ENUM_IT = ^tagHH_ENUM_IT;
284     tagHH_ENUM_IT = packed record
285          cbStruct : longint;              { size of this structure }
286          iType : longint;                 { the type of the information type ie. Inclusive, Exclusive, or Hidden }
287          pszCatName : LPCSTR;             { Set to the name of the Category to enumerate the info types in a category; else NULL }
288          pszITName : LPCSTR;              { volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeing }
289          pszITDescription : LPCSTR;       { volitile pointer to the description of the infotype. }
290       end;
291     HH_ENUM_IT = tagHH_ENUM_IT;
292     PHH_ENUM_IT = PtagHH_ENUM_IT;
293     PPHH_ENUM_IT = ^PHH_ENUM_IT;
294
295     PtagHH_ENUM_CAT = ^tagHH_ENUM_CAT;
296     tagHH_ENUM_CAT = packed record
297          cbStruct : longint;                  { size of this structure }
298          pszCatName : LPCSTR;                 { volitile pointer to the category name }
299          pszCatDescription : LPCSTR;          { volitile pointer to the category description }
300       end;
301     HH_ENUM_CAT = tagHH_ENUM_CAT;
302     PHH_ENUM_CAT = PtagHH_ENUM_CAT;
303     PPHH_ENUM_CAT = ^PHH_ENUM_CAT;
304
305     PtagHH_SET_INFOTYPE = ^tagHH_SET_INFOTYPE;
306     tagHH_SET_INFOTYPE = packed record
307          cbStruct : longint;             { the size of this structure }
308          pszCatName : LPCSTR;            { the name of the category, if any, the InfoType is a member of. }
309          pszInfoTypeName : LPCSTR;       { the name of the info type to add to the filter }
310       end;
311     HH_SET_INFOTYPE = tagHH_SET_INFOTYPE;
312     PHH_SET_INFOTYPE = PtagHH_SET_INFOTYPE;
313     PPHH_SET_INFOTYPE = ^PHH_SET_INFOTYPE;
314
315     HH_INFOTYPE = DWORD;
316     PPHH_INFOTYPE = ^PHH_INFOTYPE;
317     PHH_INFOTYPE = HH_INFOTYPE;
318
319     PtagHH_FTS_QUERY = ^tagHH_FTS_QUERY;
320     tagHH_FTS_QUERY = packed record
321          cbStruct : longint;            { Sizeof structure in bytes. }
322          fUniCodeStrings : BOOL;        { TRUE if all strings are unicode. }
323          pszSearchQuery : LPCTSTR;      { String containing the search query. }
324          iProximity : LONG;             { Word proximity. }
325          fStemmedSearch : BOOL;         { TRUE for StemmedSearch only. }
326          fTitleOnly : BOOL;             { TRUE for Title search only. }
327          fExecute : BOOL;               { TRUE to initiate the search. }
328          pszWindow : LPCTSTR;           { Window to display in }
329       end;
330     HH_FTS_QUERY = tagHH_FTS_QUERY;
331     PHH_FTS_QUERY = ^HH_FTS_QUERY;
332
333     PtagHH_WINTYPE = ^tagHH_WINTYPE;
334     tagHH_WINTYPE = packed record                                   { HH_WINTYPE Structure }
335          cbStruct : longint;                                        { IN: size of this structure including all Information Types }
336          fUniCodeStrings : BOOL;                                    { IN/OUT: TRUE if all strings are in UNICODE }
337          pszType : LPCTSTR;                                         { IN/OUT: Name of a type of window }
338          fsValidMembers : DWORD;                                    { IN: Bit flag of valid members (HHWIN_PARAM_) }
339          fsWinProperties : DWORD;                                   { IN/OUT: Properties/attributes of the window (HHWIN_) }
340          pszCaption : LPCTSTR;                                      { IN/OUT: Window title }
341          dwStyles : DWORD;                                          { IN/OUT: Window styles }
342          dwExStyles : DWORD;                                        { IN/OUT: Extended Window styles }
343          rcWindowPos : RECT;                                        { IN: Starting position, OUT: current position }
344          nShowState : longint;                                      { IN: show state (e.g., SW_SHOW) }
345          hwndHelp : HWND;                                           { OUT: window handle }
346          hwndCaller : HWND;                                         { OUT: who called this window }
347          paInfoTypes : PHH_INFOTYPE;                                { IN: Pointer to an array of Information Types }
348          { The following members are only valid if HHWIN_PROP_TRI_PANE is set }
349          hwndToolBar : HWND;                                        { OUT: toolbar window in tri-pane window }
350          hwndNavigation : HWND;                                     { OUT: navigation window in tri-pane window }
351          hwndHTML : HWND;                                           { OUT: window displaying HTML in tri-pane window }
352          iNavWidth : longint;                                       { IN/OUT: width of navigation window }
353          rcHTML : RECT;                                             { OUT: HTML window coordinates }
354          pszToc : LPCTSTR;                                          { IN: Location of the table of contents file }
355          pszIndex : LPCTSTR;                                        { IN: Location of the index file }
356          pszFile : LPCTSTR;                                         { IN: Default location of the html file }
357          pszHome : LPCTSTR;                                         { IN/OUT: html file to display when Home button is clicked }
358          fsToolBarFlags : DWORD;                                    { IN: flags controling the appearance of the toolbar }
359          fNotExpanded : BOOL;                                       { IN: TRUE/FALSE to contract or expand, OUT: current state }
360          curNavType : longint;                                      { IN/OUT: UI to display in the navigational pane }
361          tabpos : longint;                                          { IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOM }
362          idNotify : longint;                                        { IN: ID to use for WM_NOTIFY messages }
363          tabOrder : array[0..(HH_MAX_TABS+1)-1] of BYTE;            { IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabs }
364          cHistory : longint;                                        { IN/OUT: number of history items to keep (default is 30) }
365          pszJump1 : LPCTSTR;                                        { Text for HHWIN_BUTTON_JUMP1 }
366          pszJump2 : LPCTSTR;                                        { Text for HHWIN_BUTTON_JUMP2 }
367          pszUrlJump1 : LPCTSTR;                                     { URL for HHWIN_BUTTON_JUMP1 }
368          pszUrlJump2 : LPCTSTR;                                     { URL for HHWIN_BUTTON_JUMP2 }
369          rcMinSize : RECT;                                          { Minimum size for window (ignored in version 1) }
370          cbInfoTypes : longint;                                     { size of paInfoTypes; }
371          pszCustomTabs : LPCTSTR;                                   { multiple zero-terminated strings }
372       end;
373     HH_WINTYPE = tagHH_WINTYPE;
374     PHH_WINTYPE = PtagHH_WINTYPE;
375     PPHH_WINTYPE = ^PHH_WINTYPE;
376
377     PtagHHNTRACK = ^tagHHNTRACK;
378     tagHHNTRACK = packed record
379          hdr : NMHDR;
380          pszCurUrl : PCSTR;               { Multi-byte, null-terminated string }
381          idAction : longint;              { HHACT_ value }
382          phhWinType : PHH_WINTYPE;        { Current window type structure }
383       end;
384     HHNTRACK = tagHHNTRACK;
385     PHHNTRACK = ^HHNTRACK;
386
387  function HtmlHelpA(hwndCaller:HWND; pszFile:LPCSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpA';
388  function HtmlHelpW(hwndCaller:HWND; pszFile:LPCWSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpW';
389 {$ifdef Unicode}
390  function HtmlHelp(hwndCaller:HWND; pszFile:LPCWSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpW';
391 {$else}
392  function HtmlHelp(hwndCaller:HWND; pszFile:LPCSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpA';
393 {$endif}
394
395type HH_GPROPID = (
396
397    HH_GPROPID_SINGLETHREAD=1,      // VARIANT_BOOL: True for single thread
398    HH_GPROPID_TOOLBAR_MARGIN=2,    // long: Provides a left/right margin around the toolbar.
399    HH_GPROPID_UI_LANGUAGE=3,       // long: LangId of the UI.
400    HH_GPROPID_CURRENT_SUBSET=4,    // BSTR: Current subset.
401    HH_GPROPID_CONTENT_LANGUAGE=5   // long: LandId for desired content.
402    );
403
404  {$packrecords 8}
405
406  type
407     PtagHH_GLOBAL_PROPERTY = ^tagHH_GLOBAL_PROPERTY;
408     tagHH_GLOBAL_PROPERTY = packed record
409          id : HH_GPROPID;
410          _var : VARIANT;
411       end;
412     HH_GLOBAL_PROPERTY = tagHH_GLOBAL_PROPERTY;
413     PHH_GLOBAL_PROPERTY = ^HH_GLOBAL_PROPERTY;
414
415implementation
416
417end.
418