1 /*
2  * wx/msw/htmlhelp.h
3  * Copyright 2004 Jacek Caban
4  *
5  * Originally written for the Wine project, and issued under
6  * the wxWindows licence by kind permission of the author.
7  *
8  * Licence:     wxWindows licence
9  */
10 
11 #ifndef __HTMLHELP_H__
12 #define __HTMLHELP_H__
13 
14 #define HH_DISPLAY_TOPIC        0x00
15 #define HH_HELP_FINDER          0x00
16 #define HH_DISPLAY_TOC          0x01
17 #define HH_DISPLAY_INDEX        0x02
18 #define HH_DISPLAY_SEARCH       0x03
19 #define HH_SET_WIN_TYPE         0x04
20 #define HH_GET_WIN_TYPE         0x05
21 #define HH_GET_WIN_HANDLE       0x06
22 #define HH_ENUM_INFO_TYPE       0x07
23 #define HH_SET_INFO_TYPE        0x08
24 #define HH_SYNC                 0x09
25 #define HH_RESERVED1            0x0A
26 #define HH_RESERVED2            0x0B
27 #define HH_RESERVED3            0x0C
28 #define HH_KEYWORD_LOOKUP       0x0D
29 #define HH_DISPLAY_TEXT_POPUP   0x0E
30 #define HH_HELP_CONTEXT         0x0F
31 #define HH_TP_HELP_CONTEXTMENU  0x10
32 #define HH_TP_HELP_WM_HELP      0x11
33 #define HH_CLOSE_ALL            0x12
34 #define HH_ALINK_LOOKUP         0x13
35 #define HH_GET_LAST_ERROR       0x14
36 #define HH_ENUM_CATEGORY        0x15
37 #define HH_ENUM_CATEGORY_IT     0x16
38 #define HH_RESET_IT_FILTER      0x17
39 #define HH_SET_INCLUSIVE_FILTER 0x18
40 #define HH_SET_EXCLUSIVE_FILTER 0x19
41 #define HH_INITIALIZE           0x1C
42 #define HH_UNINITIALIZE         0x1D
43 #define HH_PRETRANSLATEMESSAGE  0xFD
44 #define HH_SET_GLOBAL_PROPERTY  0xFC
45 
46 #define HHWIN_PROP_TAB_AUTOHIDESHOW  0x00000001
47 #define HHWIN_PROP_ONTOP             0x00000002
48 #define HHWIN_PROP_NOTITLEBAR        0x00000004
49 #define HHWIN_PROP_NODEF_STYLES      0x00000008
50 #define HHWIN_PROP_NODEF_EXSTYLES    0x00000010
51 #define HHWIN_PROP_TRI_PANE          0x00000020
52 #define HHWIN_PROP_NOTB_TEXT         0x00000040
53 #define HHWIN_PROP_POST_QUIT         0x00000080
54 #define HHWIN_PROP_AUTO_SYNC         0x00000100
55 #define HHWIN_PROP_TRACKING          0x00000200
56 #define HHWIN_PROP_TAB_SEARCH        0x00000400
57 #define HHWIN_PROP_TAB_HISTORY       0x00000800
58 #define HHWIN_PROP_TAB_FAVORITES     0x00001000
59 #define HHWIN_PROP_CHANGE_TITLE      0x00002000
60 #define HHWIN_PROP_NAV_ONLY_WIN      0x00004000
61 #define HHWIN_PROP_NO_TOOLBAR        0x00008000
62 #define HHWIN_PROP_MENU              0x00010000
63 #define HHWIN_PROP_TAB_ADVSEARCH     0x00020000
64 #define HHWIN_PROP_USER_POS          0x00040000
65 #define HHWIN_PROP_TAB_CUSTOM1       0x00080000
66 #define HHWIN_PROP_TAB_CUSTOM2       0x00100000
67 #define HHWIN_PROP_TAB_CUSTOM3       0x00200000
68 #define HHWIN_PROP_TAB_CUSTOM4       0x00400000
69 #define HHWIN_PROP_TAB_CUSTOM5       0x00800000
70 #define HHWIN_PROP_TAB_CUSTOM6       0x01000000
71 #define HHWIN_PROP_TAB_CUSTOM7       0x02000000
72 #define HHWIN_PROP_TAB_CUSTOM8       0x04000000
73 #define HHWIN_PROP_TAB_CUSTOM9       0x08000000
74 #define HHWIN_TB_MARGIN              0x10000000
75 
76 #define HHWIN_PARAM_PROPERTIES     0x00000002
77 #define HHWIN_PARAM_STYLES         0x00000004
78 #define HHWIN_PARAM_EXSTYLES       0x00000008
79 #define HHWIN_PARAM_RECT           0x00000010
80 #define HHWIN_PARAM_NAV_WIDTH      0x00000020
81 #define HHWIN_PARAM_SHOWSTATE      0x00000040
82 #define HHWIN_PARAM_INFOTYPES      0x00000080
83 #define HHWIN_PARAM_TB_FLAGS       0x00000100
84 #define HHWIN_PARAM_EXPANSION      0x00000200
85 #define HHWIN_PARAM_TABPOS         0x00000400
86 #define HHWIN_PARAM_TABORDER       0x00000800
87 #define HHWIN_PARAM_HISTORY_COUNT  0x00001000
88 #define HHWIN_PARAM_CUR_TAB        0x00002000
89 
90 #define HHWIN_BUTTON_EXPAND      0x00000002
91 #define HHWIN_BUTTON_BACK        0x00000004
92 #define HHWIN_BUTTON_FORWARD     0x00000008
93 #define HHWIN_BUTTON_STOP        0x00000010
94 #define HHWIN_BUTTON_REFRESH     0x00000020
95 #define HHWIN_BUTTON_HOME        0x00000040
96 #define HHWIN_BUTTON_BROWSE_FWD  0x00000080
97 #define HHWIN_BUTTON_BROWSE_BCK  0x00000100
98 #define HHWIN_BUTTON_NOTES       0x00000200
99 #define HHWIN_BUTTON_CONTENTS    0x00000400
100 #define HHWIN_BUTTON_SYNC        0x00000800
101 #define HHWIN_BUTTON_OPTIONS     0x00001000
102 #define HHWIN_BUTTON_PRINT       0x00002000
103 #define HHWIN_BUTTON_INDEX       0x00004000
104 #define HHWIN_BUTTON_SEARCH      0x00008000
105 #define HHWIN_BUTTON_HISTORY     0x00010000
106 #define HHWIN_BUTTON_FAVORITES   0x00020000
107 #define HHWIN_BUTTON_JUMP1       0x00040000
108 #define HHWIN_BUTTON_JUMP2       0x00080000
109 #define HHWIN_BUTTON_ZOOM        0x00100000
110 #define HHWIN_BUTTON_TOC_NEXT    0x00200000
111 #define HHWIN_BUTTON_TOC_PREV    0x00400000
112 
113 #define HHWIN_DEF_BUTTONS  \
114     (HHWIN_BUTTON_EXPAND | HHWIN_BUTTON_BACK | HHWIN_BUTTON_OPTIONS | HHWIN_BUTTON_PRINT)
115 
116 #define IDTB_EXPAND       200
117 #define IDTB_CONTRACT     201
118 #define IDTB_STOP         202
119 #define IDTB_REFRESH      203
120 #define IDTB_BACK         204
121 #define IDTB_HOME         205
122 #define IDTB_SYNC         206
123 #define IDTB_PRINT        207
124 #define IDTB_OPTIONS      208
125 #define IDTB_FORWARD      209
126 #define IDTB_NOTES        210
127 #define IDTB_BROWSE_FWD   211
128 #define IDTB_BROWSE_BACK  212
129 #define IDTB_CONTENTS     213
130 #define IDTB_INDEX        214
131 #define IDTB_SEARCH       215
132 #define IDTB_HISTORY      216
133 #define IDTB_FAVORITES    217
134 #define IDTB_JUMP1        218
135 #define IDTB_JUMP2        219
136 #define IDTB_CUSTOMIZE    221
137 #define IDTB_ZOOM         222
138 #define IDTB_TOC_NEXT     223
139 #define IDTB_TOC_PREV     224
140 
141 #define HHN_FIRST          (0U-860U)
142 #define HHN_LAST           (0U-879U)
143 #define HHN_NAVCOMPLETE    HHN_FIRST
144 #define HHN_TRACK          (HHN_FIRST-1)
145 #define HHN_WINDOW_CREATE  (HHN_FIRST-2)
146 
147 
148 #ifdef __cplusplus
149 extern "C" {
150 #endif
151 
152 typedef struct tagHH_NOTIFY {
153     NMHDR hdr;
154     PCSTR pszurl;
155 } HH_NOTIFY;
156 
157 typedef struct tagHH_POPUPA {
158     int       cbStruct;
159     HINSTANCE hinst;
160     UINT      idString;
161     LPCSTR    pszText;
162     POINT     pt;
163     COLORREF  clrForeground;
164     COLORREF  clrBackground;
165     RECT      rcMargins;
166     LPCSTR    pszFont;
167 } HH_POPUPA;
168 
169 typedef struct tagHH_POPUPW {
170     int       cbStruct;
171     HINSTANCE hinst;
172     UINT      idString;
173     LPCWSTR   pszText;
174     POINT     pt;
175     COLORREF  clrForeground;
176     COLORREF  clrBackground;
177     RECT      rcMargins;
178     LPCWSTR   pszFont;
179 } HH_POPUPW;
180 
181 #ifdef _UNICODE
182 typedef HH_POPUPW HH_POPUP;
183 #else
184 typedef HH_POPUPA HH_POPUP;
185 #endif
186 
187 typedef struct tagHH_ALINKA {
188     int    cbStruct;
189     BOOL   fReserved;
190     LPCSTR pszKeywords;
191     LPCSTR pszUrl;
192     LPCSTR pszMsgText;
193     LPCSTR pszMsgTitle;
194     LPCSTR pszWindow;
195     BOOL   fIndexOnFail;
196 } HH_ALINKA;
197 
198 typedef struct tagHH_ALINKW {
199     int     cbStruct;
200     BOOL    fReserved;
201     LPCWSTR pszKeywords;
202     LPCWSTR pszUrl;
203     LPCWSTR pszMsgText;
204     LPCWSTR pszMsgTitle;
205     LPCWSTR pszWindow;
206     BOOL    fIndexOnFail;
207 } HH_ALINKW;
208 
209 #ifdef _UNICODE
210 typedef HH_ALINKW HH_ALINK;
211 typedef HH_ALINKW HH_AKLINK;
212 #else
213 typedef HH_ALINKA HH_ALINK;
214 typedef HH_ALINKA HH_AKLINK;
215 #endif
216 
217 enum {
218     HHWIN_NAVTYPE_TOC,
219     HHWIN_NAVTYPE_INDEX,
220     HHWIN_NAVTYPE_SEARCH,
221     HHWIN_NAVTYPE_FAVORITES,
222     HHWIN_NAVTYPE_HISTORY,
223     HHWIN_NAVTYPE_AUTHOR,
224     HHWIN_NAVTYPE_CUSTOM_FIRST = 11
225 };
226 
227 enum {
228     IT_INCLUSIVE,
229     IT_EXCLUSIVE,
230     IT_HIDDEN
231 };
232 
233 typedef struct tagHH_ENUM_IT {
234     int    cbStruct;
235     int    iType;
236     LPCSTR pszCatName;
237     LPCSTR pszITName;
238     LPCSTR pszITDescription;
239 } HH_ENUM_IT, *PHH_ENUM_IT;
240 
241 typedef struct tagHH_ENUM_CAT {
242     int    cbStruct;
243     LPCSTR pszCatName;
244     LPCSTR pszCatDescription;
245 } HH_ENUM_CAT, *PHH_ENUM_CAT;
246 
247 typedef struct tagHH_SET_INFOTYPE {
248     int    cbStruct;
249     LPCSTR pszCatName;
250     LPCSTR pszInfoTypeName;
251 } HH_SET_INFOTYPE;
252 
253 typedef DWORD HH_INFOTYPE, *PHH_INFOTYPE;
254 
255 enum {
256     HHWIN_NAVTAB_TOP,
257     HHWIN_NAVTAB_LEFT,
258     HHWIN_NAVTAB_BOTTOM
259 };
260 
261 #define HH_MAX_TABS 19
262 
263 enum {
264     HH_TAB_CONTENTS,
265     HH_TAB_INDEX,
266     HH_TAB_SEARCH,
267     HH_TAB_FAVORITES,
268     HH_TAB_HISTORY,
269     HH_TAB_AUTHOR,
270     HH_TAB_CUSTOM_FIRST = 11,
271     HH_TAB_CUSTOM_LAST = HH_MAX_TABS
272 };
273 
274 #define HH_MAX_TABS_CUSTOM        (HH_TAB_CUSTOM_LAST-HH_TAB_CUSTOM_FIRST+1)
275 #define HH_FTS_DEFAULT_PROXIMITY  -1
276 
277 typedef struct tagHH_FTS_QUERYA {
278     int    cbStruct;
279     BOOL   fUniCodeStrings;
280     LPCSTR pszSearchQuery;
281     LONG   iProximity;
282     BOOL   fStemmedSearch;
283     BOOL   fTitleOnly;
284     BOOL   fExecute;
285     LPCSTR pszWindow;
286 } HH_FTS_QUERYA;
287 
288 typedef struct tagHH_FTS_QUERYW {
289     int     cbStruct;
290     BOOL    fUniCodeStrings;
291     LPCWSTR pszSearchQuery;
292     LONG    iProximity;
293     BOOL    fStemmedSearch;
294     BOOL    fTitleOnly;
295     BOOL    fExecute;
296     LPCWSTR pszWindow;
297 } HH_FTS_QUERYW;
298 
299 #ifdef _UNICODE
300 typedef HH_FTS_QUERYW HH_FTS_QUERY;
301 #else
302 typedef HH_FTS_QUERYA HH_FTS_QUERY;
303 #endif
304 
305 typedef struct tagHH_WINTYPEA {
306     int          cbStruct;
307     BOOL         fUniCodeStrings;
308     LPCSTR       pszType;
309     DWORD        fsValidMembers;
310     DWORD        fsWinProperties;
311     LPCSTR       pszCaption;
312     DWORD        dwStyles;
313     DWORD        dwExStyles;
314     RECT         rcWindowPos;
315     int          nShowState;
316     HWND         hwndHelp;
317     HWND         hwndCaller;
318     PHH_INFOTYPE paInfoTypes;
319     HWND         hwndToolBar;
320     HWND         hwndNavigation;
321     HWND         hwndHTML;
322     int          iNavWidth;
323     RECT         rcHTML;
324     LPCSTR       pszToc;
325     LPCSTR       pszIndex;
326     LPCSTR       pszFile;
327     LPCSTR       pszHome;
328     DWORD        fsToolBarFlags;
329     BOOL         fNotExpanded;
330     int          curNavType;
331     int          tabpos;
332     int          idNotify;
333     BYTE         tabOrder[HH_MAX_TABS+1];
334     int          cHistory;
335     LPCSTR       pszJump1;
336     LPCSTR       pszJump2;
337     LPCSTR       pszUrlJump1;
338     LPCSTR       pszUrlJump2;
339     RECT         rcMinSize;
340     int          cbInfoTypes;
341     LPCSTR       pszCustomTabs;
342 } HH_WINTYPEA, *PHH_WINTYPEA;
343 
344 typedef struct tagHH_WINTYPEW {
345     int          cbStruct;
346     BOOL         fUniCodeStrings;
347     LPCWSTR      pszType;
348     DWORD        fsValidMembers;
349     DWORD        fsWinProperties;
350     LPCWSTR      pszCaption;
351     DWORD        dwStyles;
352     DWORD        dwExStyles;
353     RECT         rcWindowPos;
354     int          nShowState;
355     HWND         hwndHelp;
356     HWND         hwndCaller;
357     PHH_INFOTYPE paInfoTypes;
358     HWND         hwndToolBar;
359     HWND         hwndNavigation;
360     HWND         hwndHTML;
361     int          iNavWidth;
362     RECT         rcHTML;
363     LPCWSTR      pszToc;
364     LPCWSTR      pszIndex;
365     LPCWSTR      pszFile;
366     LPCWSTR      pszHome;
367     DWORD        fsToolBarFlags;
368     BOOL         fNotExpanded;
369     int          curNavType;
370     int          tabpos;
371     int          idNotify;
372     BYTE         tabOrder[HH_MAX_TABS+1];
373     int          cHistory;
374     LPCWSTR      pszJump1;
375     LPCWSTR      pszJump2;
376     LPCWSTR      pszUrlJump1;
377     LPCWSTR      pszUrlJump2;
378     RECT         rcMinSize;
379     int          cbInfoTypes;
380     LPCWSTR      pszCustomTabs;
381 } HH_WINTYPEW, *PHH_WINTYPEW;
382 
383 #ifdef _UNICODE
384 typedef HH_WINTYPEW HH_WINTYPE;
385 #else
386 typedef HH_WINTYPEA HH_WINTYPE;
387 #endif
388 
389 enum {
390     HHACT_TAB_CONTENTS,
391     HHACT_TAB_INDEX,
392     HHACT_TAB_SEARCH,
393     HHACT_TAB_HISTORY,
394     HHACT_TAB_FAVORITES,
395     HHACT_EXPAND,
396     HHACT_CONTRACT,
397     HHACT_BACK,
398     HHACT_FORWARD,
399     HHACT_STOP,
400     HHACT_REFRESH,
401     HHACT_HOME,
402     HHACT_SYNC,
403     HHACT_OPTIONS,
404     HHACT_PRINT,
405     HHACT_HIGHLIGHT,
406     HHACT_CUSTOMIZE,
407     HHACT_JUMP1,
408     HHACT_JUMP2,
409     HHACT_ZOOM,
410     HHACT_TOC_NEXT,
411     HHACT_TOC_PREV,
412     HHACT_NOTES,
413     HHACT_LAST_ENUM
414 };
415 
416 typedef struct tagHH_NTRACKA {
417     NMHDR        hdr;
418     PCSTR        pszCurUrl;
419     int          idAction;
420     PHH_WINTYPEA phhWinType;
421 } HH_NTRACKA;
422 
423 typedef struct tagHH_NTRACKW {
424     NMHDR        hdr;
425     PCSTR        pszCurUrl;
426     int          idAction;
427     PHH_WINTYPEW phhWinType;
428 } HH_NTRACKW;
429 
430 #ifdef _UNICODE
431 typedef HH_NTRACKW HH_NTRACK;
432 #else
433 typedef HH_NTRACKA HH_NTRACK;
434 #endif
435 
436 HWND WINAPI HtmlHelpA(HWND,LPCSTR,UINT,DWORD);
437 HWND WINAPI HtmlHelpA(HWND,LPCSTR,UINT,DWORD);
438 #define HtmlHelp WINELIB_NAME_AW(HtmlHelp)
439 
440 #define ATOM_HTMLHELP_API_ANSI    (LPTSTR)14
441 #define ATOM_HTMLHELP_API_UNICODE (LPTSTR)15
442 
443 typedef enum tagHH_GPROPID {
444     HH_GPROPID_SINGLETHREAD     = 1,
445     HH_GPROPID_TOOLBAR_MARGIN   = 2,
446     HH_GPROPID_UI_LANGUAGE      = 3,
447     HH_GPROPID_CURRENT_SUBSET   = 4,
448     HH_GPROPID_CONTENT_LANGUAGE = 5
449 } HH_GPROPID;
450 
451 #ifdef __WIDL_OAIDL_H
452 
453 typedef struct tagHH_GLOBAL_PROPERTY
454 {
455     HH_GPROPID  id;
456     VARIANT     var;
457 } HH_GLOBAL_PROPERTY ;
458 
459 #endif /* __WIDL_OAIDL_H */
460 
461 #ifdef __cplusplus
462 }
463 #endif
464 
465 #endif /* __HTMLHELP_H__ */
466