regedit: context menu support

Dimitrie O. Paun dpaun at rogers.com
Tue Jan 13 23:29:56 CST 2004


This is from ReactOS tree, a bit cleaned up.

ChangeLog
    weiden at mok.lvcm.com
    Add context menu support to regedit.

Index: programs/regedit/En.rc
===================================================================
RCS file: /var/cvs/wine/programs/regedit/En.rc,v
retrieving revision 1.6
diff -u -r1.6 En.rc
--- programs/regedit/En.rc	6 Jan 2004 20:38:56 -0000	1.6
+++ programs/regedit/En.rc	14 Jan 2004 05:00:26 -0000
@@ -102,6 +102,29 @@
     END
 END
 
+IDR_POPUP_MENUS MENU DISCARDABLE
+BEGIN
+  POPUP ""
+  BEGIN
+	MENUITEM "&Modify",                     ID_EDIT_MODIFY
+	MENUITEM "Modify Binary Data",          ID_EDIT_MODIFY_BIN
+	MENUITEM SEPARATOR
+	MENUITEM "&Delete\tDel",                ID_EDIT_DELETE
+	MENUITEM "&Rename",                     ID_EDIT_RENAME
+  END
+  POPUP ""
+  BEGIN
+        POPUP "&New"
+        BEGIN
+            MENUITEM "&Key",                        ID_EDIT_NEW_KEY
+            MENUITEM SEPARATOR
+            MENUITEM "&String Value",               ID_EDIT_NEW_STRINGVALUE
+            MENUITEM "&Binary Value",               ID_EDIT_NEW_BINARYVALUE
+            MENUITEM "&DWORD Value",                ID_EDIT_NEW_DWORDVALUE
+        END
+  END
+END
+
 
 /*
  * Dialog
Index: programs/regedit/listview.c
===================================================================
RCS file: /var/cvs/wine/programs/regedit/listview.c,v
retrieving revision 1.5
diff -u -r1.5 listview.c
--- programs/regedit/listview.c	13 Jan 2004 23:18:12 -0000	1.5
+++ programs/regedit/listview.c	14 Jan 2004 05:05:00 -0000
@@ -346,6 +346,13 @@
             return CallWindowProc(g_orgListWndProc, hWnd, message, wParam, lParam);
         }
         break;
+    case WM_CONTEXTMENU: {
+        POINTS pt = MAKEPOINTS(lParam);
+        int cnt = ListView_GetNextItem(hWnd, -1, LVNI_FOCUSED | LVNI_SELECTED);
+        TrackPopupMenu(GetSubMenu(hPopupMenus, cnt == -1 ? PM_NEW : PM_MODIFYVALUE), 
+		       TPM_RIGHTBUTTON, pt.x, pt.y, 0, hFrameWnd, NULL);
+        break;
+    }
     case WM_KEYDOWN:
         if (wParam == VK_TAB) {
             /*TODO: SetFocus(Globals.hDriveBar) */
Index: programs/regedit/main.c
===================================================================
RCS file: /var/cvs/wine/programs/regedit/main.c,v
retrieving revision 1.7
diff -u -r1.7 main.c
--- programs/regedit/main.c	12 Dec 2003 04:08:59 -0000	1.7
+++ programs/regedit/main.c	13 Jan 2004 23:33:47 -0000
@@ -42,6 +42,7 @@
 HWND hFrameWnd;
 HWND hStatusBar;
 HMENU hMenuFrame;
+HMENU hPopupMenus = 0;
 UINT nClipboardFormat;
 LPCTSTR strClipboardFormat = _T("TODO: SET CORRECT FORMAT");
 
@@ -104,6 +105,7 @@
     hChildWndClass = hChildWndClass; /* warning eater */
 
     hMenuFrame = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_REGEDIT_MENU));
+    hPopupMenus = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_POPUP_MENUS));
 
     /* Initialize the Windows Common Controls DLL */
     InitCommonControls();
Index: programs/regedit/main.h
===================================================================
RCS file: /var/cvs/wine/programs/regedit/main.h,v
retrieving revision 1.12
diff -u -r1.12 main.h
--- programs/regedit/main.h	13 Jan 2004 23:18:12 -0000	1.12
+++ programs/regedit/main.h	14 Jan 2004 05:14:58 -0000
@@ -32,6 +32,9 @@
 
 #define COUNT_OF(a) (sizeof(a)/sizeof(a[0]))
 
+#define PM_MODIFYVALUE  0
+#define PM_NEW          1
+
 extern HINSTANCE hInst;
 
 /******************************************************************************/
@@ -64,6 +67,7 @@
 extern HWND      hFrameWnd;
 extern HMENU     hMenuFrame;
 extern HWND      hStatusBar;
+extern HMENU     hPopupMenus;
 extern HFONT     hFont;
 extern enum OPTION_FLAGS Options;
 
Index: programs/regedit/resource.h
===================================================================
RCS file: /var/cvs/wine/programs/regedit/resource.h,v
retrieving revision 1.5
diff -u -r1.5 resource.h
--- programs/regedit/resource.h	6 Jan 2004 20:38:56 -0000	1.5
+++ programs/regedit/resource.h	13 Jan 2004 23:35:04 -0000
@@ -41,6 +41,7 @@
 #define IDD_DIALOG2                     132
 #define IDB_CLOSED_FILE                 133
 #define IDB_ROOT                        134
+#define IDR_POPUP_MENUS                 137
 #define IDC_LICENSE_EDIT                1029
 #define ID_REGISTRY_EXIT                32770
 #define ID_FAVOURITES_ADDTOFAVOURITES   32772
@@ -114,6 +115,7 @@
 #define IDC_DWORD_DEC			32854
 #define IDS_NEWKEY			32860
 #define IDS_NEWVALUE			32861
+#define ID_EDIT_MODIFY_BIN		32870
 
 #define IDD_EDIT_STRING			2000
 #define IDC_VALUE_NAME			2001


-- 
Dimi.




More information about the wine-patches mailing list