Name: wh_winhelp ChangeLog: implemented a wine only scheme for interprocess WinHelp message passing (server side) License: X11 GenDate: 2002/11/10 11:37:28 UTC ModifiedFiles: programs/Makefile.in programs/winhelp/string.c programs/winhelp/winhelp.c AddedFiles: =================================================================== RCS file: /home/cvs/cvsroot/wine/wine/programs/Makefile.in,v retrieving revision 1.26 diff -u -u -r1.26 Makefile.in --- programs/Makefile.in 18 Sep 2002 23:10:21 -0000 1.26 +++ programs/Makefile.in 10 Nov 2002 11:34:21 -0000 @@ -68,7 +72,8 @@ # Symlinks to apps that we want to run from inside the source tree SYMLINKS = \ wineconsole.exe \ - winedbg.exe + winedbg.exe \ + winhelp.exe @MAKE_RULES@ @@ -121,7 +126,11 @@ winedbg.exe$(DLLEXT): winedbg/winedbg.exe$(DLLEXT) $(RM) $@ && $(LN_S) winedbg/winedbg.exe$(DLLEXT) $@ +winhelp.exe$(DLLEXT): winhelp/winhelp.exe$(DLLEXT) + $(RM) $@ && $(LN_S) winhelp/winhelp.exe$(DLLEXT) $@ + wineconsole/wineconsole.exe$(DLLEXT): wineconsole winedbg/winedbg.exe$(DLLEXT): winedbg +winhelp/winhelp.exe$(DLLEXT): winhelp ### Dependencies: Index: programs/winhelp/string.c =================================================================== RCS file: /home/cvs/cvsroot/wine/wine/programs/winhelp/string.c,v retrieving revision 1.3 diff -u -u -r1.3 string.c --- programs/winhelp/string.c 14 May 2002 03:48:10 -0000 1.3 +++ programs/winhelp/string.c 10 Nov 2002 11:30:55 -0000 @@ -18,19 +18,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "windows.h" -#include "winhelp.h" - /* Class names */ -CHAR MAIN_WIN_CLASS_NAME[] = "WHMain"; -CHAR BUTTON_BOX_WIN_CLASS_NAME[] = "WHButtonBox"; -CHAR TEXT_WIN_CLASS_NAME[] = "WHText"; -CHAR SHADOW_WIN_CLASS_NAME[] = "WHShadow"; -CHAR STRING_BUTTON[] = "BUTTON"; +char MAIN_WIN_CLASS_NAME[] = "MS_WINHELP"; +char BUTTON_BOX_WIN_CLASS_NAME[] = "WHButtonBox"; +char TEXT_WIN_CLASS_NAME[] = "WHText"; +char SHADOW_WIN_CLASS_NAME[] = "WHShadow"; +char STRING_BUTTON[] = "BUTTON"; /* Resource names */ -CHAR STRING_DIALOG_TEST[] = "DIALOG_TEST"; +char STRING_DIALOG_TEST[] = "DIALOG_TEST"; /* Local Variables: */ /* c-file-style: "GNU" */ Index: programs/winhelp/winhelp.c =================================================================== RCS file: /home/cvs/cvsroot/wine/wine/programs/winhelp/winhelp.c,v retrieving revision 1.17 diff -u -u -r1.17 winhelp.c --- programs/winhelp/winhelp.c 21 Oct 2002 19:18:42 -0000 1.17 +++ programs/winhelp/winhelp.c 10 Nov 2002 10:44:53 -0000 @@ -54,11 +54,11 @@ */ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show) { - MSG msg; - LONG lHash = 0; + MSG msg; + LONG lHash = 0; Globals.hInstance = hInstance; - + /* Get options */ while (*cmdline && (*cmdline == ' ' || *cmdline == '-')) { @@ -87,6 +87,14 @@ case 't': MacroTest = TRUE; break; + + case 'x': + show = SW_HIDE; + break; + + default: + WINE_FIXME("Unsupported cmd line: %s\n", cmdline); + break; } } @@ -142,6 +150,69 @@ RegisterClass(&class_shadow)); } +typedef struct +{ + WORD size; + WORD command; + LONG data; + LONG reserved; + WORD ofsFilename; + WORD ofsData; +} WINHELP,*LPWINHELP; + +/****************************************************************** + * WINHELP_HandleCommand + * + * + */ +static LRESULT WINHELP_HandleCommand(HWND hSrcWnd, LPARAM lParam) +{ + COPYDATASTRUCT* cds = (COPYDATASTRUCT*)lParam; + WINHELP* wh; + + if (cds->dwData != 0xA1DE505) + { + WINE_FIXME("Wrong magic number (%08lx)\n", cds->dwData); + return 0; + } + + wh = (WINHELP*)cds->lpData; + + if (wh) + { + WINE_TRACE("Got[%u]: cmd=%u data=%08lx fn=%s\n", + wh->size, wh->command, wh->data, + wh->ofsFilename ? (LPSTR)wh + wh->ofsFilename : ""); + switch (wh->command) + { + case HELP_QUIT: + MACRO_Exit(); + break; + case HELP_FINDER: + /* in fact, should be the topic dialog box */ + if (wh->ofsFilename) + { + MACRO_JumpHash((LPSTR)wh + wh->ofsFilename, "main", 0); + } + break; + case HELP_CONTEXT: + case HELP_SETCONTENTS: + case HELP_CONTENTS: + case HELP_CONTEXTPOPUP: + case HELP_FORCEFILE: + case HELP_HELPONHELP: + case HELP_KEY: + case HELP_PARTIALKEY: + case HELP_COMMAND: + case HELP_MULTIKEY: + case HELP_SETWINPOS: + WINE_FIXME("NIY\n"); + break; + } + } + return 0L; +} + /*********************************************************************** * * WINHELP_CreateHelpWindow @@ -257,6 +329,7 @@ WINHELP_SetupText(win->hTextWnd); InvalidateRect(win->hTextWnd, NULL, TRUE); SendMessage(win->hMainWnd, WM_USER, 0, 0); + ShowWindow(win->hMainWnd, nCmdShow); UpdateWindow(win->hTextWnd); @@ -418,8 +491,9 @@ case WM_DESTROY: if (Globals.hPopupWnd) DestroyWindow(Globals.hPopupWnd); break; + case WM_COPYDATA: + return WINHELP_HandleCommand((HWND)wParam, lParam); } - return DefWindowProc(hWnd, msg, wParam, lParam); }