/* * Help Viewer * * Copyright 1996 Ulrich Schmid * Copyright 2002 Sylvain Petreolle * 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 #include "hlpfile.h" #include "windef.h" #include "winbase.h" #include "macro.h" #include "winhelp_res.h" typedef struct tagHelpLinePart { RECT rect; enum {hlp_line_part_text, hlp_line_part_bitmap, hlp_line_part_metafile} cookie; union { struct { LPCSTR lpsText; HFONT hFont; COLORREF color; WORD wTextLen; WORD wUnderline; /* 0 None, 1 simple, 2 double, 3 dotted */ } text; struct { HBITMAP hBitmap; } bitmap; struct { HMETAFILE hMetaFile; INT mm; } metafile; } u; HLPFILE_LINK* link; struct tagHelpLinePart *next; } WINHELP_LINE_PART; typedef struct tagHelpLine { RECT rect; WINHELP_LINE_PART first_part; struct tagHelpLine* next; } WINHELP_LINE; 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 { LPCSTR lpszName; WINHELP_BUTTON* first_button; HLPFILE_PAGE* page; WINHELP_LINE* first_line; HWND hMainWnd; HWND hShadowWnd; HWND hHistoryWnd; HFONT* fonts; UINT fonts_len; HCURSOR hArrowCur; HCURSOR hHandCur; HBRUSH hBrush; HLPFILE_WINDOWINFO* info; HLPFILE_LINK* current_link; WINHELP_PAGESET back; 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, LONG); 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; } WINHELP_GLOBALS; extern WINHELP_GLOBALS Globals; extern FARPROC Callbacks[]; 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(void); void WINHELP_DeleteBackSet(WINHELP_WINDOW*); INT WINHELP_MessageBoxIDS_s(UINT, LPCSTR, UINT, WORD); HLPFILE* WINHELP_LookupHelpFile(LPCSTR lpszFile); HLPFILE_WINDOWINFO* WINHELP_GetWindowInfo(HLPFILE* hlpfile, LPCSTR name); void WINHELP_LayoutMainWindow(WINHELP_WINDOW* win); 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