Rewrote macro engine for adding dynamic macro loading capability.
[wine] / programs / winhelp / winhelp.h
1 /*
2  * Help Viewer
3  *
4  * Copyright    1996 Ulrich Schmid
5  * Copyright    2002 Sylvain Petreolle <spetreolle@yahoo.fr>
6  *              2002 Eric Pouech
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22
23 #define MAX_LANGUAGE_NUMBER     255
24 #define MAX_PATHNAME_LEN        1024
25 #define MAX_STRING_LEN          255
26
27 #define INTERNAL_BORDER_WIDTH   5
28 #define POPUP_YDISTANCE         20
29 #define SHADOW_DX               10
30 #define SHADOW_DY               10
31 #define BUTTON_CX               6
32 #define BUTTON_CY               6
33
34 #ifndef RC_INVOKED
35
36 #include "hlpfile.h"
37 #include "macro.h"
38 #include "winhelp_res.h"
39
40 typedef struct tagHelpLinePart
41 {
42     RECT      rect;
43     enum {hlp_line_part_text, hlp_line_part_image}      cookie;
44     union
45     {
46         struct
47         {
48             LPCSTR      lpsText;
49             HFONT       hFont;
50             COLORREF    color;
51             WORD        wTextLen;
52             WORD        wUnderline; /* 0 None, 1 simple, 2 double, 3 dotted */
53         } text;
54         struct
55         {
56             HBITMAP     hBitmap;
57         } image;
58     } u;
59     HLPFILE_LINK        link;
60
61     struct tagHelpLinePart *next;
62 } WINHELP_LINE_PART;
63
64 typedef struct tagHelpLine
65 {
66     RECT                rect;
67     WINHELP_LINE_PART   first_part;
68     struct tagHelpLine* next;
69 } WINHELP_LINE;
70
71 typedef struct tagHelpButton
72 {
73     HWND                hWnd;
74
75     LPCSTR              lpszID;
76     LPCSTR              lpszName;
77     LPCSTR              lpszMacro;
78
79     WPARAM              wParam;
80
81     RECT                rect;
82
83     struct tagHelpButton*next;
84 } WINHELP_BUTTON;
85
86 typedef struct tagWinHelp
87 {
88     LPCSTR lpszName;
89
90     WINHELP_BUTTON*     first_button;
91     HLPFILE_PAGE*       page;
92     WINHELP_LINE*       first_line;
93
94     HWND                hMainWnd;
95     HWND                hButtonBoxWnd;
96     HWND                hTextWnd;
97     HWND                hShadowWnd;
98
99     HFONT*              fonts;
100     UINT                fonts_len;
101
102     HCURSOR             hArrowCur;
103     HCURSOR             hHandCur;
104
105     struct tagWinHelp*  next;
106 } WINHELP_WINDOW;
107
108 typedef struct
109 {
110     UINT                wVersion;
111     HANDLE              hInstance;
112     HWND                hPopupWnd;
113     UINT                wStringTableOffset;
114     BOOL                isBook;
115     WINHELP_WINDOW*     active_win;
116     WINHELP_WINDOW*     win_list;
117 } WINHELP_GLOBALS;
118
119 extern WINHELP_GLOBALS Globals;
120
121 BOOL WINHELP_CreateHelpWindowByHash(LPCSTR, LONG, LPCSTR, BOOL, HWND, LPPOINT, INT);
122 BOOL WINHELP_CreateHelpWindowByPage(HLPFILE_PAGE*, LPCSTR, BOOL, HWND, LPPOINT, INT);
123 INT  WINHELP_MessageBoxIDS(UINT, UINT, WORD);
124 INT  WINHELP_MessageBoxIDS_s(UINT, LPCSTR, UINT, WORD);
125
126 extern char MAIN_WIN_CLASS_NAME[];
127 extern char BUTTON_BOX_WIN_CLASS_NAME[];
128 extern char TEXT_WIN_CLASS_NAME[];
129 extern char SHADOW_WIN_CLASS_NAME[];
130 extern char STRING_BUTTON[];
131 extern char STRING_MENU_Xx[];
132 extern char STRING_DIALOG_TEST[];
133 #endif
134
135 /* Buttons */
136 #define WH_FIRST_BUTTON     500