Owen Rudge : shell32: Add code to process menu item selections.
Alexandre Julliard
julliard at winehq.org
Wed Jul 23 07:09:52 CDT 2008
Module: wine
Branch: master
Commit: 9b2f6364acdd99a4b88deef2f72f1475aa0800c3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9b2f6364acdd99a4b88deef2f72f1475aa0800c3
Author: Owen Rudge <owen at owenrudge.net>
Date: Tue Jul 22 17:31:08 2008 +0100
shell32: Add code to process menu item selections.
---
dlls/shell32/control.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 53 insertions(+), 0 deletions(-)
diff --git a/dlls/shell32/control.c b/dlls/shell32/control.c
index eae5129..13fefaa 100644
--- a/dlls/shell32/control.c
+++ b/dlls/shell32/control.c
@@ -353,6 +353,59 @@ static LRESULT WINAPI Control_WndProc(HWND hWnd, UINT wMsg,
Control_FreeCPlItems(hWnd, panel);
PostQuitMessage(0);
break;
+ case WM_COMMAND:
+ switch (LOWORD(lParam1))
+ {
+ case IDM_CPANEL_EXIT:
+ SendMessageW(hWnd, WM_CLOSE, 0, 0);
+ return 0;
+
+ case FCIDM_SHVIEW_BIGICON:
+ case FCIDM_SHVIEW_SMALLICON:
+ case FCIDM_SHVIEW_LISTVIEW:
+ case FCIDM_SHVIEW_REPORTVIEW:
+ return 0;
+
+ default:
+ /* check if this is an applet */
+ if ((LOWORD(lParam1) >= IDM_CPANEL_APPLET_BASE) &&
+ (LOWORD(lParam1) <= IDM_CPANEL_APPLET_BASE + panel->total_subprogs))
+ {
+ CPlItem *item;
+ HMENU hMenu, hSubMenu;
+ MENUITEMINFOW mii;
+
+ /* retrieve the CPlItem structure from the menu item data */
+ hMenu = GetMenu(hWnd);
+
+ if (!hMenu)
+ break;
+
+ hSubMenu = GetSubMenu(hMenu, 0);
+
+ if (!hSubMenu)
+ break;
+
+ mii.cbSize = sizeof(MENUITEMINFOW);
+ mii.fMask = MIIM_DATA;
+
+ if (!GetMenuItemInfoW(hSubMenu, LOWORD(lParam1), FALSE, &mii))
+ break;
+
+ item = (CPlItem *) mii.dwItemData;
+
+ /* execute the applet if item is valid */
+ if (item)
+ item->applet->proc(item->applet->hWnd, CPL_DBLCLK, item->id,
+ item->applet->info[item->id].lData);
+
+ return 0;
+ }
+
+ break;
+ }
+
+ break;
case WM_PAINT:
return Control_WndProc_Paint(panel, lParam1);
case WM_LBUTTONUP:
More information about the wine-cvs
mailing list