Author: weiden
Date: Fri Oct 12 00:23:26 2007
New Revision: 29517
URL:
http://svn.reactos.org/svn/reactos?rev=29517&view=rev
Log:
Display a context menu for the selected monitor
Modified:
trunk/reactos/dll/cpl/desk/desk.c
trunk/reactos/dll/cpl/desk/desk.h
trunk/reactos/dll/cpl/desk/lang/bg-BG.rc
trunk/reactos/dll/cpl/desk/lang/cs-CZ.rc
trunk/reactos/dll/cpl/desk/lang/de-DE.rc
trunk/reactos/dll/cpl/desk/lang/el-GR.rc
trunk/reactos/dll/cpl/desk/lang/en-US.rc
trunk/reactos/dll/cpl/desk/lang/es-ES.rc
trunk/reactos/dll/cpl/desk/lang/fr-FR.rc
trunk/reactos/dll/cpl/desk/lang/hu-HU.rc
trunk/reactos/dll/cpl/desk/lang/id-ID.rc
trunk/reactos/dll/cpl/desk/lang/it-IT.rc
trunk/reactos/dll/cpl/desk/lang/ja-JP.rc
trunk/reactos/dll/cpl/desk/lang/nl-NL.rc
trunk/reactos/dll/cpl/desk/lang/pl-PL.rc
trunk/reactos/dll/cpl/desk/lang/ru-RU.rc
trunk/reactos/dll/cpl/desk/lang/sk-SK.rc
trunk/reactos/dll/cpl/desk/lang/sv-SE.rc
trunk/reactos/dll/cpl/desk/lang/uk-UA.rc
trunk/reactos/dll/cpl/desk/monslctl.c
trunk/reactos/dll/cpl/desk/monslctl.h
trunk/reactos/dll/cpl/desk/resource.h
trunk/reactos/dll/cpl/desk/settings.c
Modified: trunk/reactos/dll/cpl/desk/desk.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/desk.c?rev=29…
==============================================================================
--- trunk/reactos/dll/cpl/desk/desk.c (original)
+++ trunk/reactos/dll/cpl/desk/desk.c Fri Oct 12 00:23:26 2007
@@ -33,6 +33,33 @@
DisplayApplet
}
};
+
+HMENU
+LoadPopupMenu(IN HINSTANCE hInstance,
+ IN LPCTSTR lpMenuName)
+{
+ HMENU hMenu, hSubMenu = NULL;
+
+ hMenu = LoadMenu(hInstance,
+ lpMenuName);
+
+ if (hMenu != NULL)
+ {
+ hSubMenu = GetSubMenu(hMenu,
+ 0);
+ if (hSubMenu != NULL &&
+ !RemoveMenu(hMenu,
+ 0,
+ MF_BYPOSITION))
+ {
+ hSubMenu = NULL;
+ }
+
+ DestroyMenu(hMenu);
+ }
+
+ return hSubMenu;
+}
static BOOL CALLBACK
PropSheetAddPage(HPROPSHEETPAGE hpage, LPARAM lParam)
Modified: trunk/reactos/dll/cpl/desk/desk.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/desk.h?rev=29…
==============================================================================
--- trunk/reactos/dll/cpl/desk/desk.h (original)
+++ trunk/reactos/dll/cpl/desk/desk.h Fri Oct 12 00:23:26 2007
@@ -34,6 +34,10 @@
} DIBITMAP, *PDIBITMAP;
extern HINSTANCE hApplet;
+
+HMENU
+LoadPopupMenu(IN HINSTANCE hInstance,
+ IN LPCTSTR lpMenuName);
PDIBITMAP DibLoadImage(LPTSTR lpFilename);
VOID DibFreeImage(PDIBITMAP lpBitmap);
Modified: trunk/reactos/dll/cpl/desk/lang/bg-BG.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/bg-BG.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/bg-BG.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/bg-BG.rc Fri Oct 12 00:23:26 2007
@@ -133,6 +133,18 @@
MENUITEM "Îáèêíîâåíî", ID_MENU_NORMAL
MENUITEM "Èçêëþ÷åíî", ID_MENU_DISABLED
MENUITEM "Èçáðàíî", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/cs-CZ.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/cs-CZ.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/cs-CZ.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/cs-CZ.rc Fri Oct 12 00:23:26 2007
@@ -130,6 +130,18 @@
MENUITEM "Normální", ID_MENU_NORMAL
MENUITEM "Nepøístupné", ID_MENU_DISABLED
MENUITEM "Vybráno", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/de-DE.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/de-DE.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/de-DE.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/de-DE.rc Fri Oct 12 00:23:26 2007
@@ -129,6 +129,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Deaktiviert", ID_MENU_DISABLED
MENUITEM "Ausgewählt", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/el-GR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/el-GR.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/el-GR.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/el-GR.rc Fri Oct 12 00:23:26 2007
@@ -129,6 +129,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Disabled", ID_MENU_DISABLED
MENUITEM "Selected", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/en-US.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/en-US.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/en-US.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/en-US.rc Fri Oct 12 00:23:26 2007
@@ -131,6 +131,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Disabled", ID_MENU_DISABLED
MENUITEM "Selected", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/es-ES.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/es-ES.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/es-ES.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/es-ES.rc Fri Oct 12 00:23:26 2007
@@ -136,6 +136,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Disabled", ID_MENU_DISABLED
MENUITEM "Selected", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/fr-FR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/fr-FR.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/fr-FR.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/fr-FR.rc Fri Oct 12 00:23:26 2007
@@ -132,6 +132,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Désactivé", ID_MENU_DISABLED
MENUITEM "Sélectionné", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/hu-HU.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/hu-HU.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/hu-HU.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/hu-HU.rc Fri Oct 12 00:23:26 2007
@@ -130,6 +130,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Disabled", ID_MENU_DISABLED
MENUITEM "Selected", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/id-ID.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/id-ID.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/id-ID.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/id-ID.rc Fri Oct 12 00:23:26 2007
@@ -129,6 +129,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Dimatikan", ID_MENU_DISABLED
MENUITEM "Dipilih", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/it-IT.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/it-IT.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/it-IT.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/it-IT.rc Fri Oct 12 00:23:26 2007
@@ -129,6 +129,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Disabled", ID_MENU_DISABLED
MENUITEM "Selected", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/ja-JP.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/ja-JP.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/ja-JP.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/ja-JP.rc Fri Oct 12 00:23:26 2007
@@ -129,6 +129,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Disabled", ID_MENU_DISABLED
MENUITEM "Selected", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/nl-NL.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/nl-NL.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/nl-NL.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/nl-NL.rc Fri Oct 12 00:23:26 2007
@@ -131,6 +131,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Disabled", ID_MENU_DISABLED
MENUITEM "Selected", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/pl-PL.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/pl-PL.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/pl-PL.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/pl-PL.rc Fri Oct 12 00:23:26 2007
@@ -135,6 +135,18 @@
MENUITEM "Normalny", ID_MENU_NORMAL
MENUITEM "Wy³¹czony", ID_MENU_DISABLED
MENUITEM "Wybrany", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/ru-RU.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/ru-RU.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/ru-RU.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/ru-RU.rc Fri Oct 12 00:23:26 2007
@@ -129,6 +129,18 @@
MENUITEM "Îáû÷íàÿ", ID_MENU_NORMAL
MENUITEM "Îòêëþ÷åííàÿ", ID_MENU_DISABLED
MENUITEM "Âûáðàííàÿ", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/sk-SK.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/sk-SK.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/sk-SK.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/sk-SK.rc Fri Oct 12 00:23:26 2007
@@ -138,6 +138,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Disabled", ID_MENU_DISABLED
MENUITEM "Selected", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/sv-SE.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/sv-SE.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/sv-SE.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/sv-SE.rc Fri Oct 12 00:23:26 2007
@@ -132,6 +132,18 @@
MENUITEM "Normal", ID_MENU_NORMAL
MENUITEM "Disabled", ID_MENU_DISABLED
MENUITEM "Selected", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/lang/uk-UA.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/uk-UA.rc…
==============================================================================
--- trunk/reactos/dll/cpl/desk/lang/uk-UA.rc (original)
+++ trunk/reactos/dll/cpl/desk/lang/uk-UA.rc Fri Oct 12 00:23:26 2007
@@ -137,6 +137,18 @@
MENUITEM "Çâè÷àéíå", ID_MENU_NORMAL
MENUITEM "Âèìêíåíå", ID_MENU_DISABLED
MENUITEM "Âèáðàíå", ID_MENU_SELECTED
+END
+
+IDM_MONITOR_MENU MENU
+BEGIN
+ POPUP ""
+ BEGIN
+ MENUITEM "&Attached", ID_MENU_ATTACHED
+ MENUITEM "&Primary", ID_MENU_PRIMARY
+ MENUITEM SEPARATOR
+ MENUITEM "&Identify", ID_MENU_IDENTIFY
+ MENUITEM "P&roperties", ID_MENU_PROPERTIES
+ END
END
STRINGTABLE
Modified: trunk/reactos/dll/cpl/desk/monslctl.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/monslctl.c?re…
==============================================================================
--- trunk/reactos/dll/cpl/desk/monslctl.c (original)
+++ trunk/reactos/dll/cpl/desk/monslctl.c Fri Oct 12 00:23:26 2007
@@ -496,6 +496,32 @@
return FALSE;
}
+static INT
+MonSelGetMonitorRect(IN OUT PMONITORSELWND infoPtr,
+ IN INT Index,
+ OUT PRECT prc)
+{
+ RECT rc, rcClient;
+
+ if (Index < 0 || Index >= infoPtr->MonitorsCount)
+ return -1;
+
+ if (!infoPtr->CanDisplay)
+ return 0;
+
+ MonSelRectToScreen(infoPtr,
+ &infoPtr->Monitors[Index].rc,
+ prc);
+
+ rcClient.left = rcClient.top = 0;
+ rcClient.right = infoPtr->ClientSize.cx;
+ rcClient.bottom = infoPtr->ClientSize.cy;
+
+ return IntersectRect(&rc,
+ &rcClient,
+ prc) != FALSE;
+}
+
static BOOL
MonSelSetCurSelMonitor(IN OUT PMONITORSELWND infoPtr,
IN INT Index,
@@ -568,7 +594,8 @@
infoPtr->SelectionFrame.cx = infoPtr->SelectionFrame.cy = 4;
infoPtr->Margin.cx = infoPtr->Margin.cy = 20;
infoPtr->SelectedMonitor = -1;
- infoPtr->ControlExStyle = MSLM_EX_ALLOWSELECTDISABLED;
+ infoPtr->ControlExStyle = MSLM_EX_ALLOWSELECTDISABLED | MSLM_EX_HIDENUMBERONSINGLE
|
+ MSLM_EX_SELECTONRIGHTCLICK;
return;
}
@@ -709,6 +736,10 @@
DWORD Index;
RECT rc, rctmp;
INT iPrevBkMode;
+ BOOL bHideNumber;
+
+ bHideNumber = (infoPtr->ControlExStyle & MSLM_EX_HIDENUMBERS) ||
+ ((infoPtr->MonitorsCount == 1) && (infoPtr->ControlExStyle &
MSLM_EX_HIDENUMBERONSINGLE));
hbBk = GetSysColorBrush(COLOR_BACKGROUND);
hpFg = CreatePen(PS_SOLID,
@@ -773,22 +804,25 @@
-1,
-1);
- hFont = MonSelGetMonitorFont(infoPtr,
- hDC,
- Index);
- if (hFont != NULL)
- {
- hPrevFont = SelectObject(hDC,
- hFont);
-
- DrawText(hDC,
- infoPtr->Monitors[Index].szCaption,
- -1,
- &rc,
- DT_VCENTER | DT_CENTER | DT_NOPREFIX | DT_SINGLELINE);
-
- SelectObject(hDC,
- hPrevFont);
+ if (!bHideNumber)
+ {
+ hFont = MonSelGetMonitorFont(infoPtr,
+ hDC,
+ Index);
+ if (hFont != NULL)
+ {
+ hPrevFont = SelectObject(hDC,
+ hFont);
+
+ DrawText(hDC,
+ infoPtr->Monitors[Index].szCaption,
+ -1,
+ &rc,
+ DT_VCENTER | DT_CENTER | DT_NOPREFIX | DT_SINGLELINE);
+
+ SelectObject(hDC,
+ hPrevFont);
+ }
}
if (infoPtr->MonitorInfo[Index].Flags & MSL_MIF_DISABLED)
@@ -813,6 +847,41 @@
hbOldBk);
}
+static VOID
+MonSelContextMenu(IN OUT PMONITORSELWND infoPtr,
+ IN SHORT x,
+ IN SHORT y)
+{
+ MONSL_MONNMBUTTONCLICKED nm;
+ INT Index;
+
+ if (!infoPtr->HasFocus)
+ SetFocus(infoPtr->hSelf);
+
+ nm.pt.x = x;
+ nm.pt.y = y;
+
+ Index = MonSelHitTest(infoPtr,
+ &nm.pt);
+
+ MonSelNotifyMonitor(infoPtr,
+ MSLN_RBUTTONUP,
+ Index,
+ (PMONSL_MONNMHDR)&nm);
+
+ /* Send a WM_CONTEXTMENU notification */
+ MapWindowPoints(infoPtr->hSelf,
+ NULL,
+ &nm.pt,
+ 1);
+
+ SendMessage(infoPtr->hSelf,
+ WM_CONTEXTMENU,
+ (WPARAM)infoPtr->hSelf,
+ MAKELPARAM(nm.pt.x,
+ nm.pt.y));
+}
+
static LRESULT CALLBACK
MonitorSelWndProc(IN HWND hwnd,
IN UINT uMsg,
@@ -873,9 +942,16 @@
break;
}
+ case WM_RBUTTONDOWN:
+ {
+ if (!(infoPtr->ControlExStyle & MSLM_EX_SELECTONRIGHTCLICK))
+ break;
+
+ /* fall through */
+ }
+
case WM_LBUTTONDBLCLK:
case WM_LBUTTONDOWN:
- case WM_RBUTTONDOWN:
{
INT Index;
POINT pt;
@@ -899,6 +975,14 @@
{
if (!infoPtr->HasFocus)
SetFocus(hwnd);
+ break;
+ }
+
+ case WM_RBUTTONUP:
+ {
+ MonSelContextMenu(infoPtr,
+ (SHORT)LOWORD(lParam),
+ (SHORT)HIWORD(lParam));
break;
}
@@ -1081,6 +1165,14 @@
break;
}
+ case MSLM_GETMONITORRECT:
+ {
+ Ret = (LRESULT)MonSelGetMonitorRect(infoPtr,
+ (INT)wParam,
+ (PRECT)lParam);
+ break;
+ }
+
case WM_CREATE:
{
infoPtr = (PMONITORSELWND) HeapAlloc(GetProcessHeap(),
Modified: trunk/reactos/dll/cpl/desk/monslctl.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/monslctl.h?re…
==============================================================================
--- trunk/reactos/dll/cpl/desk/monslctl.h (original)
+++ trunk/reactos/dll/cpl/desk/monslctl.h Fri Oct 12 00:23:26 2007
@@ -4,6 +4,9 @@
/* Control extended styles */
#define MSLM_EX_ALLOWSELECTNONE 0x1
#define MSLM_EX_ALLOWSELECTDISABLED 0x2
+#define MSLM_EX_HIDENUMBERONSINGLE 0x4
+#define MSLM_EX_HIDENUMBERS 0x8
+#define MSLM_EX_SELECTONRIGHTCLICK 0x10
/* MONSL_MONINFO Flags */
#define MSL_MIF_DISABLED 0x1
@@ -24,6 +27,13 @@
MONSL_MONINFO MonitorInfo;
} MONSL_MONNMHDR, *PMONSL_MONNMHDR;
+typedef struct _MONSL_MONNMBUTTONCLICKED
+{
+ /* Used with MSLN_MONITORCHANGING */
+ MONSL_MONNMHDR hdr;
+ POINT pt;
+} MONSL_MONNMBUTTONCLICKED, *PMONSL_MONNMBUTTONCLICKED;
+
typedef struct _MONSL_MONNMMONITORCHANGING
{
/* Used with MSLN_MONITORCHANGING */
@@ -52,7 +62,19 @@
*
* lParam: PMONSL_MONNMHDR
*/
-#define MSLN_MONITORCHANGED 101
+#define MSLN_MONITORCHANGED 102
+
+/*
+ * MSLN_RBUTTONUP
+ * This notification code is sent through WM_NOTIFY after the user did a
+ * right click on the control. If the control's extended style
+ * MSLM_EX_SELECTONRIGHTCLICK is set and the user clicked on a monitor,
+ * that monitor is selected and relevant notifications are sent before
+ * this notification is sent.
+ *
+ * lParam: PMONSL_MONNMBUTTONCLICKED
+ */
+#define MSLN_RBUTTONUP 103
/*
* MSLM_SETMONITORSINFO
@@ -146,7 +168,15 @@
* Allow deselecting a monitor by clicking into
* unused areas of the control.
* * MSLM_EX_ALLOWSELECTDISABLED
- * Allow selecting disabled monitors
+ * Allow selecting disabled monitors.
+ * * MSLM_EX_HIDENUMBERONSINGLE
+ * Hides the monitor number if the control only
+ * displays one monitor.
+ * * MSLM_EX_HIDENUMBERS
+ * Does not show monitor numbers.
+ * * MSLM_EX_SELECTONRIGHTCLICK
+ * Selects a monitor when the user right clicks
+ * on it.
*
* Returns non-zero value if successful.
*/
@@ -160,6 +190,20 @@
* Returns the control's extended style flags.
*/
#define MSLM_GETEXSTYLE (WM_USER + 0x19)
+
+/*
+ * MSLM_GETMONITORRECT
+ * wParam: INT
+ * Index of the monitor whose display rectangle is queried.
+ * lParam: PRECT
+ * Pointer to a RECT structure that receives the rectangle
+ * in coordinates relative to the control's client area.
+ *
+ * Returns a positive value if the rectangle is visible.
+ * Returns zero if the rectangle is invisible.
+ * Returns a negative value if the index is not valid.
+ */
+#define MSLM_GETMONITORRECT (WM_USER + 0x20)
BOOL RegisterMonitorSelectionControl(IN HINSTANCE hInstance);
VOID UnregisterMonitorSelectionControl(IN HINSTANCE hInstance);
Modified: trunk/reactos/dll/cpl/desk/resource.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/resource.h?re…
==============================================================================
--- trunk/reactos/dll/cpl/desk/resource.h (original)
+++ trunk/reactos/dll/cpl/desk/resource.h Fri Oct 12 00:23:26 2007
@@ -70,6 +70,12 @@
#define ID_MENU_NORMAL 2101
#define ID_MENU_DISABLED 2102
#define ID_MENU_SELECTED 2103
+
+#define IDM_MONITOR_MENU 2110
+#define ID_MENU_ATTACHED 2111
+#define ID_MENU_PRIMARY 2112
+#define ID_MENU_IDENTIFY 2113
+#define ID_MENU_PROPERTIES 2114
/* Settings Page */
Modified: trunk/reactos/dll/cpl/desk/settings.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/settings.c?re…
==============================================================================
--- trunk/reactos/dll/cpl/desk/settings.c (original)
+++ trunk/reactos/dll/cpl/desk/settings.c Fri Oct 12 00:23:26 2007
@@ -644,6 +644,106 @@
break;
}
+ case WM_CONTEXTMENU:
+ {
+ HWND hwndMonSel;
+ HMENU hPopup;
+ UINT uiCmd;
+ POINT pt, ptClient;
+ INT Index;
+
+ pt.x = (SHORT)LOWORD(lParam);
+ pt.y = (SHORT)HIWORD(lParam);
+
+ hwndMonSel = GetDlgItem(hwndDlg,
+ IDC_SETTINGS_MONSEL);
+ if ((HWND)wParam == hwndMonSel)
+ {
+ if (pt.x == -1 && pt.y == -1)
+ {
+ RECT rcMon;
+
+ Index = (INT)SendMessage(hwndMonSel,
+ MSLM_GETCURSEL,
+ 0,
+ 0);
+
+ if (Index >= 0 &&
+ (INT)SendMessage(hwndMonSel,
+ MSLM_GETMONITORRECT,
+ Index,
+ (LPARAM)&rcMon) > 0)
+ {
+ pt.x = rcMon.left + ((rcMon.right - rcMon.left) / 2);
+ pt.y = rcMon.top + ((rcMon.bottom - rcMon.top) / 2);
+ }
+ else
+ pt.x = pt.y = 0;
+
+ MapWindowPoints(hwndMonSel,
+ NULL,
+ &pt,
+ 1);
+ }
+ else
+ {
+ ptClient = pt;
+ MapWindowPoints(NULL,
+ hwndMonSel,
+ &ptClient,
+ 1);
+
+ Index = (INT)SendMessage(hwndMonSel,
+ MSLM_HITTEST,
+ (WPARAM)&ptClient,
+ 0);
+ }
+
+ if (Index >= 0)
+ {
+ hPopup = LoadPopupMenu(hApplet,
+ MAKEINTRESOURCE(IDM_MONITOR_MENU));
+ if (hPopup != NULL)
+ {
+ /* FIXME: Enable/Disable menu items */
+ EnableMenuItem(hPopup,
+ ID_MENU_ATTACHED,
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ EnableMenuItem(hPopup,
+ ID_MENU_PRIMARY,
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ EnableMenuItem(hPopup,
+ ID_MENU_IDENTIFY,
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+ EnableMenuItem(hPopup,
+ ID_MENU_PROPERTIES,
+ MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
+
+ uiCmd = (UINT)TrackPopupMenu(hPopup,
+ TPM_RETURNCMD | TPM_RIGHTBUTTON,
+ pt.x,
+ pt.y,
+ 0,
+ hwndDlg,
+ NULL);
+
+ switch (uiCmd)
+ {
+ case ID_MENU_ATTACHED:
+ case ID_MENU_PRIMARY:
+ case ID_MENU_IDENTIFY:
+ case ID_MENU_PROPERTIES:
+ /* FIXME: Implement */
+ break;
+ }
+
+ DestroyMenu(hPopup);
+ }
+ }
+ }
+ break;
+ }
+
case WM_DESTROY:
{
PDISPLAY_DEVICE_ENTRY Current = pGlobalData->DisplayDeviceList;