Author: dchapyshev
Date: Tue Apr 22 15:01:08 2008
New Revision: 33109
URL: 
http://svn.reactos.org/svn/reactos?rev=33109&view=rev
Log:
- Add "Preferences" button
Modified:
    trunk/reactos/base/applications/kbswitch/kbswitch.c
    trunk/reactos/base/applications/kbswitch/kbswitch.h
    trunk/reactos/base/applications/kbswitch/lang/de-DE.rc
    trunk/reactos/base/applications/kbswitch/lang/en-US.rc
    trunk/reactos/base/applications/kbswitch/lang/ru-RU.rc
    trunk/reactos/base/applications/kbswitch/resource.h
Modified: trunk/reactos/base/applications/kbswitch/kbswitch.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch…
==============================================================================
--- trunk/reactos/base/applications/kbswitch/kbswitch.c [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/kbswitch.c [iso-8859-1] Tue Apr 22 15:01:08
2008
@@ -117,8 +117,8 @@
 BOOL CALLBACK
 EnumWindowsProc(HWND hwnd, LPARAM lParam)
 {
-       SendMessage(hwnd, WM_INPUTLANGCHANGEREQUEST, 0, lParam);
-       return TRUE;
+    SendMessage(hwnd, WM_INPUTLANGCHANGEREQUEST, 0, lParam);
+    return TRUE;
 }
 static VOID
@@ -142,7 +142,6 @@
     HMENU hMenu;
     HKEY hKey;
     DWORD dwIndex, dwSize;
-    TCHAR szExit[MAX_PATH];
     TCHAR szLayoutNum[CCH_ULONG_DEC + 1];
     TCHAR szName[MAX_PATH];
@@ -165,11 +164,17 @@
         RegCloseKey(hKey);
     }
-    LoadString(hInst, IDS_EXIT, szExit, MAX_PATH);
-    AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
-    AppendMenu(hMenu, MF_STRING, MENU_ID_EXIT, szExit);
-
     return hMenu;
+}
+
+static VOID
+ShowRightPopupMenu(HWND hwnd, POINT pt)
+{
+    HMENU hMenu;
+
+    hMenu = GetSubMenu(LoadMenu(hInst, MAKEINTRESOURCE(IDR_POPUP)), 0);
+    TrackPopupMenu(hMenu, 0, pt.x, pt.y, 0, hwnd, NULL);
+    DestroyMenu(hMenu);
 }
 LRESULT CALLBACK
@@ -189,7 +194,6 @@
             {
                 case WM_LBUTTONDBLCLK:
                 case WM_LBUTTONDOWN:
-                case WM_RBUTTONDOWN:
                 {
                     POINT pt;
@@ -197,15 +201,45 @@
                     TrackPopupMenu(hPopupMenu, 0, pt.x, pt.y, 0, hwnd, NULL);
                 }
                 break;
+                               case WM_RBUTTONDOWN:
+                               {
+                                       POINT pt;
+
+                                       GetCursorPos(&pt);
+                                       ShowRightPopupMenu(hwnd, pt);
+                               }
+                               break;
             }
             break;
         case WM_COMMAND:
-            if (LOWORD(wParam) == MENU_ID_EXIT)
-                SendMessage(hwnd, WM_CLOSE, 0, 0);
-            else
-                ActivateLayout(LOWORD(wParam));
-
+                       switch (LOWORD(wParam))
+                       {
+                               case ID_EXIT:
+                                       SendMessage(hwnd, WM_CLOSE, 0, 0);
+                               break;
+
+                               case ID_PROFERENCES:
+                               {
+                                       SHELLEXECUTEINFO shInputDll;
+
+                    memset(&shInputDll, 0x0, sizeof(SHELLEXECUTEINFO));
+                    shInputDll.cbSize = sizeof(shInputDll);
+                    shInputDll.hwnd = hwnd;
+                    shInputDll.lpVerb = _T("open");
+                    shInputDll.lpFile = _T("RunDll32.exe");
+                    shInputDll.lpParameters = _T("shell32.dll,Control_RunDLL
input.dll");
+                    if (ShellExecuteEx(&shInputDll) == 0)
+                    {
+                        MessageBox(hwnd, _T("Can't start input.dll"), NULL,
MB_OK | MB_ICONERROR);
+                    }
+                               }
+                               break;
+
+                               default:
+                                       ActivateLayout(LOWORD(wParam));
+                               break;
+                       }
             break;
         case WM_DESTROY:
Modified: trunk/reactos/base/applications/kbswitch/kbswitch.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch…
==============================================================================
--- trunk/reactos/base/applications/kbswitch/kbswitch.h [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/kbswitch.h [iso-8859-1] Tue Apr 22 15:01:08
2008
@@ -10,5 +10,3 @@
 // Maximum Character Count of a ULONG in decimal
 #define CCH_ULONG_DEC    10
-
-#define MENU_ID_EXIT     65535
Modified: trunk/reactos/base/applications/kbswitch/lang/de-DE.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch…
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/de-DE.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/de-DE.rc [iso-8859-1] Tue Apr 22
15:01:08 2008
@@ -1,6 +1,11 @@
 LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
-STRINGTABLE
+IDR_POPUP MENU
 BEGIN
-       IDS_EXIT, "Beenden"
+    POPUP "popup"
+    BEGIN
+        MENUITEM "&Preferences...",  ID_PROFERENCES
+        MENUITEM SEPARATOR
+        MENUITEM "&Beenden",         ID_EXIT
+    END
 END
Modified: trunk/reactos/base/applications/kbswitch/lang/en-US.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch…
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/en-US.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/en-US.rc [iso-8859-1] Tue Apr 22
15:01:08 2008
@@ -1,6 +1,11 @@
 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-STRINGTABLE
+IDR_POPUP MENU
 BEGIN
-       IDS_EXIT, "Exit"
+    POPUP "popup"
+    BEGIN
+        MENUITEM "&Preferences...",  ID_PROFERENCES
+        MENUITEM SEPARATOR
+        MENUITEM "&Exit",            ID_EXIT
+    END
 END
Modified: trunk/reactos/base/applications/kbswitch/lang/ru-RU.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch…
==============================================================================
--- trunk/reactos/base/applications/kbswitch/lang/ru-RU.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/lang/ru-RU.rc [iso-8859-1] Tue Apr 22
15:01:08 2008
@@ -1,6 +1,11 @@
 LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
-STRINGTABLE
+IDR_POPUP MENU
 BEGIN
-       IDS_EXIT, "Âûõîä"
+    POPUP "popup"
+    BEGIN
+        MENUITEM "&Ïàðàìåòðû...",    ID_PROFERENCES
+        MENUITEM SEPARATOR
+        MENUITEM "&Âûõîä",           ID_EXIT
+    END
 END
Modified: trunk/reactos/base/applications/kbswitch/resource.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/kbswitch…
==============================================================================
--- trunk/reactos/base/applications/kbswitch/resource.h [iso-8859-1] (original)
+++ trunk/reactos/base/applications/kbswitch/resource.h [iso-8859-1] Tue Apr 22 15:01:08
2008
@@ -1,5 +1,9 @@
 /* Icons */
-#define IDI_MAIN    100
+#define IDI_MAIN         100
-/* Strings */
-#define IDS_EXIT    1001
+/* Menus */
+#define IDR_POPUP        12000
+
+/* Menu items */
+#define ID_EXIT          10001
+#define ID_PROFERENCES   10002