|  | /* | 
|  | * Help Viewer | 
|  | * | 
|  | * Copyright    1996 Ulrich Schmid | 
|  | * Copyright    2002 Sylvain Petreolle <spetreolle@yahoo.fr> | 
|  | *              2002 Eric Pouech | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | #define MAX_LANGUAGE_NUMBER     255 | 
|  | #define MAX_STRING_LEN          255 | 
|  |  | 
|  | #define INTERNAL_BORDER_WIDTH   5 | 
|  | #define POPUP_YDISTANCE         20 | 
|  | #define SHADOW_DX               10 | 
|  | #define SHADOW_DY               10 | 
|  | #define BUTTON_CX               6 | 
|  | #define BUTTON_CY               6 | 
|  |  | 
|  | #ifndef RC_INVOKED | 
|  |  | 
|  | #include <stdarg.h> | 
|  |  | 
|  | #include "hlpfile.h" | 
|  | #include "windef.h" | 
|  | #include "winbase.h" | 
|  | #include "macro.h" | 
|  | #include "winhelp_res.h" | 
|  |  | 
|  | typedef struct tagHelpButton | 
|  | { | 
|  | HWND                hWnd; | 
|  |  | 
|  | LPCSTR              lpszID; | 
|  | LPCSTR              lpszName; | 
|  | LPCSTR              lpszMacro; | 
|  |  | 
|  | WPARAM              wParam; | 
|  |  | 
|  | RECT                rect; | 
|  |  | 
|  | struct tagHelpButton*next; | 
|  | } WINHELP_BUTTON; | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | HLPFILE_PAGE*       page; | 
|  | HLPFILE_WINDOWINFO* wininfo; | 
|  | ULONG               relative; | 
|  | } WINHELP_WNDPAGE; | 
|  |  | 
|  | typedef struct tagPageSet | 
|  | { | 
|  | /* FIXME: for now it's a fixed size */ | 
|  | WINHELP_WNDPAGE     set[40]; | 
|  | unsigned            index; | 
|  | } WINHELP_PAGESET; | 
|  |  | 
|  | typedef struct tagWinHelp | 
|  | { | 
|  | unsigned            ref_count; | 
|  | WINHELP_BUTTON*     first_button; | 
|  | HLPFILE_PAGE*       page; | 
|  |  | 
|  | HWND                hMainWnd; | 
|  | HWND                hShadowWnd; | 
|  | HWND                hHistoryWnd; | 
|  |  | 
|  | WNDPROC             origRicheditWndProc; | 
|  |  | 
|  | HFONT*              fonts; | 
|  | UINT                fonts_len; | 
|  |  | 
|  | HCURSOR             hHandCur; | 
|  |  | 
|  | HBRUSH              hBrush; | 
|  |  | 
|  | HLPFILE_WINDOWINFO* info; | 
|  |  | 
|  | WINHELP_PAGESET     back; | 
|  | unsigned            font_scale; /* 0 = small, 1 = normal, 2 = large */ | 
|  |  | 
|  | struct tagWinHelp*  next; | 
|  | } WINHELP_WINDOW; | 
|  |  | 
|  | #define DC_NOMSG     0x00000000 | 
|  | #define DC_MINMAX    0x00000001 | 
|  | #define DC_INITTERM  0x00000002 | 
|  | #define DC_JUMP      0x00000004 | 
|  | #define DC_ACTIVATE  0x00000008 | 
|  | #define DC_CALLBACKS 0x00000010 | 
|  |  | 
|  | #define DW_NOTUSED    0 | 
|  | #define DW_WHATMSG    1 | 
|  | #define DW_MINMAX     2 | 
|  | #define DW_SIZE       3 | 
|  | #define DW_INIT       4 | 
|  | #define DW_TERM       5 | 
|  | #define DW_STARTJUMP  6 | 
|  | #define DW_ENDJUMP    7 | 
|  | #define DW_CHGFILE    8 | 
|  | #define DW_ACTIVATE   9 | 
|  | #define	DW_CALLBACKS 10 | 
|  |  | 
|  | typedef LONG (CALLBACK *WINHELP_LDLLHandler)(WORD, LONG_PTR, LONG_PTR); | 
|  |  | 
|  | typedef struct tagDll | 
|  | { | 
|  | HANDLE              hLib; | 
|  | const char*         name; | 
|  | WINHELP_LDLLHandler handler; | 
|  | DWORD               class; | 
|  | struct tagDll*      next; | 
|  | } WINHELP_DLL; | 
|  |  | 
|  | typedef struct | 
|  | { | 
|  | UINT                wVersion; | 
|  | HANDLE              hInstance; | 
|  | BOOL                isBook; | 
|  | WINHELP_WINDOW*     active_win; | 
|  | WINHELP_WINDOW*     active_popup; | 
|  | WINHELP_WINDOW*     win_list; | 
|  | WNDPROC             button_proc; | 
|  | WINHELP_DLL*        dlls; | 
|  | WINHELP_PAGESET     history; | 
|  | HFONT               hButtonFont; | 
|  | } WINHELP_GLOBALS; | 
|  |  | 
|  | extern const struct winhelp_callbacks | 
|  | { | 
|  | WORD      (WINAPI *GetFSError)(void); | 
|  | HANDLE    (WINAPI *HfsOpenSz)(LPSTR,BYTE); | 
|  | WORD      (WINAPI *RcCloseHfs)(HANDLE); | 
|  | HANDLE    (WINAPI *HfOpenHfs)(HANDLE,LPSTR,BYTE); | 
|  | HANDLE    (WINAPI *RcCloseHf)(HANDLE); | 
|  | LONG      (WINAPI *LcbReadHf)(HANDLE,BYTE*,LONG); | 
|  | LONG      (WINAPI *LTellHf)(HANDLE); | 
|  | LONG      (WINAPI *LSeekHf)(HANDLE,LONG,WORD); | 
|  | BOOL      (WINAPI *FEofHf)(HANDLE); | 
|  | LONG      (WINAPI *LcbSizeHf)(HANDLE); | 
|  | BOOL      (WINAPI *FAccessHfs)(HANDLE,LPSTR,BYTE); | 
|  | WORD      (WINAPI *RcLLInfoFromHf)(HANDLE,WORD,LPWORD,LPLONG,LPLONG); | 
|  | WORD      (WINAPI *RcLLInfoFromHfs)(HANDLE,LPSTR,WORD,LPWORD,LPLONG,LPLONG); | 
|  | void      (WINAPI *ErrorW)(int); | 
|  | void      (WINAPI *ErrorSz)(LPSTR); | 
|  | ULONG_PTR (WINAPI *GetInfo)(WORD,HWND); | 
|  | LONG      (WINAPI *API)(LPSTR,WORD,DWORD); | 
|  | } Callbacks; | 
|  |  | 
|  | extern WINHELP_GLOBALS Globals; | 
|  |  | 
|  | BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE*, int, BOOL); | 
|  | BOOL WINHELP_OpenHelpWindow(HLPFILE_PAGE* (*)(HLPFILE*, LONG, ULONG*), | 
|  | HLPFILE*, LONG, HLPFILE_WINDOWINFO*, int); | 
|  | BOOL WINHELP_GetOpenFileName(LPSTR, int); | 
|  | BOOL WINHELP_CreateIndexWindow(BOOL); | 
|  | void WINHELP_DeleteBackSet(WINHELP_WINDOW*); | 
|  | HLPFILE* WINHELP_LookupHelpFile(LPCSTR lpszFile); | 
|  | HLPFILE_WINDOWINFO* WINHELP_GetWindowInfo(HLPFILE* hlpfile, LPCSTR name); | 
|  | void WINHELP_LayoutMainWindow(WINHELP_WINDOW* win); | 
|  | WINHELP_WINDOW* WINHELP_GrabWindow(WINHELP_WINDOW*); | 
|  | BOOL WINHELP_ReleaseWindow(WINHELP_WINDOW*); | 
|  |  | 
|  | extern const char MAIN_WIN_CLASS_NAME[]; | 
|  | extern const char BUTTON_BOX_WIN_CLASS_NAME[]; | 
|  | extern const char TEXT_WIN_CLASS_NAME[]; | 
|  | extern const char SHADOW_WIN_CLASS_NAME[]; | 
|  | extern const char HISTORY_WIN_CLASS_NAME[]; | 
|  | extern const char STRING_BUTTON[]; | 
|  | extern const char STRING_MENU_Xx[]; | 
|  | extern const char STRING_DIALOG_TEST[]; | 
|  | #endif | 
|  |  | 
|  | /* Buttons */ | 
|  | #define WH_FIRST_BUTTON     500 |