winhlp32: Add support for accelerators in general and F1 in particular.

Francois Gouget fgouget at free.fr
Fri Apr 8 05:03:25 CDT 2011


---

Note that I decided to keep the 'Help on Help' menu name because the 
user may think that 'Contents' refers to the current help file's table 
of contents.

 programs/winhlp32/winhelp.c     |   12 +++++++++---
 programs/winhlp32/winhelp_res.h |    1 +
 programs/winhlp32/winhlp32.rc   |    8 +++++++-
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/programs/winhlp32/winhelp.c b/programs/winhlp32/winhelp.c
index 685b55a..a43a784 100644
--- a/programs/winhlp32/winhelp.c
+++ b/programs/winhlp32/winhelp.c
@@ -1347,7 +1347,7 @@ static LRESULT CALLBACK WINHELP_MainWndProc(HWND hWnd, UINT msg, WPARAM wParam,
 
     case WM_COMMAND:
         win = (WINHELP_WINDOW*) GetWindowLongPtr(hWnd, 0);
-        switch (wParam)
+        switch (LOWORD(wParam))
 	{
             /* Menu FILE */
 	case MNID_FILE_OPEN:    MACRO_FileOpen();       break;
@@ -1654,6 +1654,7 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show)
     static CHAR         default_wndname[] = "main";
     LPSTR               wndname = default_wndname;
     WINHELP_DLL*        dll;
+    HACCEL              hAccel;
 
     Globals.hInstance = hInstance;
 
@@ -1725,10 +1726,15 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show)
                            WINHELP_GetWindowInfo(hlpfile, wndname), show);
 
     /* Message loop */
+    hAccel = LoadAcceleratorsW(hInstance, MAKEINTRESOURCEW(MAIN_ACCEL));
     while ((Globals.win_list || Globals.active_popup) && GetMessage(&msg, 0, 0, 0))
     {
-        TranslateMessage(&msg);
-        DispatchMessage(&msg);
+        HWND hWnd = Globals.active_win ? Globals.active_win->hMainWnd : NULL;
+        if (!TranslateAcceleratorW(hWnd, hAccel, &msg))
+	{
+            TranslateMessage(&msg);
+            DispatchMessage(&msg);
+        }
     }
     for (dll = Globals.dlls; dll; dll = dll->next)
     {
diff --git a/programs/winhlp32/winhelp_res.h b/programs/winhlp32/winhelp_res.h
index 92a4863..5bf97aa 100644
--- a/programs/winhlp32/winhelp_res.h
+++ b/programs/winhlp32/winhelp_res.h
@@ -29,6 +29,7 @@
 
 #define MAIN_MENU		0xF000
 #define CONTEXT_MENU            0xF001
+#define MAIN_ACCEL              0xF002
 
 #define STID_WINE_HELP		0x120
 #define STID_WHERROR		0x121
diff --git a/programs/winhlp32/winhlp32.rc b/programs/winhlp32/winhlp32.rc
index 8d3acaf..6f0ee8a 100644
--- a/programs/winhlp32/winhlp32.rc
+++ b/programs/winhlp32/winhlp32.rc
@@ -51,7 +51,7 @@ MAIN_MENU MENU
   END
  }
  POPUP "&Help" {
-   MENUITEM "&Help on help", MNID_HELP_HELPON
+   MENUITEM "&Help on help\tF1", MNID_HELP_HELPON
    MENUITEM "Always on &top", MNID_HELP_HELPTOP
    MENUITEM SEPARATOR
    MENUITEM "&About Wine Help", MNID_HELP_ABOUT
@@ -94,5 +94,11 @@ STID_PSH_INDEX,		"Help topics: "
 
 LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
 
+
+MAIN_ACCEL ACCELERATORS
+{
+    VK_F1, MNID_HELP_HELPON, VIRTKEY
+}
+
 /* @makedep: winhelp.ico */
 IDI_WINHELP ICON winhelp.ico
-- 
1.7.4.1




More information about the wine-patches mailing list