mirror of
https://github.com/reactos/reactos.git
synced 2024-08-01 09:01:13 +00:00
Display a context menu for the selected monitor
svn path=/trunk/; revision=29517
This commit is contained in:
parent
4ae5d0691a
commit
6f9c72878c
|
@ -34,6 +34,33 @@ APPLET Applets[NUM_APPLETS] =
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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
|
static BOOL CALLBACK
|
||||||
PropSheetAddPage(HPROPSHEETPAGE hpage, LPARAM lParam)
|
PropSheetAddPage(HPROPSHEETPAGE hpage, LPARAM lParam)
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,6 +35,10 @@ typedef struct _DIBITMAP
|
||||||
|
|
||||||
extern HINSTANCE hApplet;
|
extern HINSTANCE hApplet;
|
||||||
|
|
||||||
|
HMENU
|
||||||
|
LoadPopupMenu(IN HINSTANCE hInstance,
|
||||||
|
IN LPCTSTR lpMenuName);
|
||||||
|
|
||||||
PDIBITMAP DibLoadImage(LPTSTR lpFilename);
|
PDIBITMAP DibLoadImage(LPTSTR lpFilename);
|
||||||
VOID DibFreeImage(PDIBITMAP lpBitmap);
|
VOID DibFreeImage(PDIBITMAP lpBitmap);
|
||||||
|
|
||||||
|
|
|
@ -135,6 +135,18 @@ BEGIN
|
||||||
MENUITEM "Èçáðàíî", ID_MENU_SELECTED
|
MENUITEM "Èçáðàíî", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -132,6 +132,18 @@ BEGIN
|
||||||
MENUITEM "Vybráno", ID_MENU_SELECTED
|
MENUITEM "Vybráno", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_CPLNAME "Obrazovka"
|
IDS_CPLNAME "Obrazovka"
|
||||||
|
|
|
@ -131,6 +131,18 @@ BEGIN
|
||||||
MENUITEM "Ausgewählt", ID_MENU_SELECTED
|
MENUITEM "Ausgewählt", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Mehrere Monitore)"
|
IDS_MULTIPLEMONITORS "(Mehrere Monitore)"
|
||||||
|
|
|
@ -131,6 +131,18 @@ BEGIN
|
||||||
MENUITEM "Selected", ID_MENU_SELECTED
|
MENUITEM "Selected", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -133,6 +133,18 @@ BEGIN
|
||||||
MENUITEM "Selected", ID_MENU_SELECTED
|
MENUITEM "Selected", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -138,6 +138,18 @@ BEGIN
|
||||||
MENUITEM "Selected", ID_MENU_SELECTED
|
MENUITEM "Selected", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -134,6 +134,18 @@ BEGIN
|
||||||
MENUITEM "Sélectionné", ID_MENU_SELECTED
|
MENUITEM "Sélectionné", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Moniteurs multiples)"
|
IDS_MULTIPLEMONITORS "(Moniteurs multiples)"
|
||||||
|
|
|
@ -132,6 +132,18 @@ BEGIN
|
||||||
MENUITEM "Selected", ID_MENU_SELECTED
|
MENUITEM "Selected", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -131,6 +131,18 @@ BEGIN
|
||||||
MENUITEM "Dipilih", ID_MENU_SELECTED
|
MENUITEM "Dipilih", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -131,6 +131,18 @@ BEGIN
|
||||||
MENUITEM "Selected", ID_MENU_SELECTED
|
MENUITEM "Selected", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -131,6 +131,18 @@ BEGIN
|
||||||
MENUITEM "Selected", ID_MENU_SELECTED
|
MENUITEM "Selected", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -133,6 +133,18 @@ BEGIN
|
||||||
MENUITEM "Selected", ID_MENU_SELECTED
|
MENUITEM "Selected", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -137,6 +137,18 @@ BEGIN
|
||||||
MENUITEM "Wybrany", ID_MENU_SELECTED
|
MENUITEM "Wybrany", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -131,6 +131,18 @@ BEGIN
|
||||||
MENUITEM "Âûáðàííàÿ", ID_MENU_SELECTED
|
MENUITEM "Âûáðàííàÿ", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -140,6 +140,18 @@ BEGIN
|
||||||
MENUITEM "Selected", ID_MENU_SELECTED
|
MENUITEM "Selected", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Viacero monitorov)"
|
IDS_MULTIPLEMONITORS "(Viacero monitorov)"
|
||||||
|
|
|
@ -134,6 +134,18 @@ BEGIN
|
||||||
MENUITEM "Selected", ID_MENU_SELECTED
|
MENUITEM "Selected", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
IDS_MULTIPLEMONITORS "(Multiple Monitors)"
|
||||||
|
|
|
@ -139,6 +139,18 @@ BEGIN
|
||||||
MENUITEM "Âèáðàíå", ID_MENU_SELECTED
|
MENUITEM "Âèáðàíå", ID_MENU_SELECTED
|
||||||
END
|
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
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_MULTIPLEMONITORS "(Äåê³ëüêà ìîí³òîð³â)"
|
IDS_MULTIPLEMONITORS "(Äåê³ëüêà ìîí³òîð³â)"
|
||||||
|
|
|
@ -496,6 +496,32 @@ MonSelGetMonitorInfo(IN PMONITORSELWND infoPtr,
|
||||||
return FALSE;
|
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
|
static BOOL
|
||||||
MonSelSetCurSelMonitor(IN OUT PMONITORSELWND infoPtr,
|
MonSelSetCurSelMonitor(IN OUT PMONITORSELWND infoPtr,
|
||||||
IN INT Index,
|
IN INT Index,
|
||||||
|
@ -568,7 +594,8 @@ MonSelCreate(IN OUT PMONITORSELWND infoPtr)
|
||||||
infoPtr->SelectionFrame.cx = infoPtr->SelectionFrame.cy = 4;
|
infoPtr->SelectionFrame.cx = infoPtr->SelectionFrame.cy = 4;
|
||||||
infoPtr->Margin.cx = infoPtr->Margin.cy = 20;
|
infoPtr->Margin.cx = infoPtr->Margin.cy = 20;
|
||||||
infoPtr->SelectedMonitor = -1;
|
infoPtr->SelectedMonitor = -1;
|
||||||
infoPtr->ControlExStyle = MSLM_EX_ALLOWSELECTDISABLED;
|
infoPtr->ControlExStyle = MSLM_EX_ALLOWSELECTDISABLED | MSLM_EX_HIDENUMBERONSINGLE |
|
||||||
|
MSLM_EX_SELECTONRIGHTCLICK;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -709,6 +736,10 @@ MonSelPaint(IN OUT PMONITORSELWND infoPtr,
|
||||||
DWORD Index;
|
DWORD Index;
|
||||||
RECT rc, rctmp;
|
RECT rc, rctmp;
|
||||||
INT iPrevBkMode;
|
INT iPrevBkMode;
|
||||||
|
BOOL bHideNumber;
|
||||||
|
|
||||||
|
bHideNumber = (infoPtr->ControlExStyle & MSLM_EX_HIDENUMBERS) ||
|
||||||
|
((infoPtr->MonitorsCount == 1) && (infoPtr->ControlExStyle & MSLM_EX_HIDENUMBERONSINGLE));
|
||||||
|
|
||||||
hbBk = GetSysColorBrush(COLOR_BACKGROUND);
|
hbBk = GetSysColorBrush(COLOR_BACKGROUND);
|
||||||
hpFg = CreatePen(PS_SOLID,
|
hpFg = CreatePen(PS_SOLID,
|
||||||
|
@ -773,22 +804,25 @@ MonSelPaint(IN OUT PMONITORSELWND infoPtr,
|
||||||
-1,
|
-1,
|
||||||
-1);
|
-1);
|
||||||
|
|
||||||
hFont = MonSelGetMonitorFont(infoPtr,
|
if (!bHideNumber)
|
||||||
hDC,
|
|
||||||
Index);
|
|
||||||
if (hFont != NULL)
|
|
||||||
{
|
{
|
||||||
hPrevFont = SelectObject(hDC,
|
hFont = MonSelGetMonitorFont(infoPtr,
|
||||||
hFont);
|
hDC,
|
||||||
|
Index);
|
||||||
|
if (hFont != NULL)
|
||||||
|
{
|
||||||
|
hPrevFont = SelectObject(hDC,
|
||||||
|
hFont);
|
||||||
|
|
||||||
DrawText(hDC,
|
DrawText(hDC,
|
||||||
infoPtr->Monitors[Index].szCaption,
|
infoPtr->Monitors[Index].szCaption,
|
||||||
-1,
|
-1,
|
||||||
&rc,
|
&rc,
|
||||||
DT_VCENTER | DT_CENTER | DT_NOPREFIX | DT_SINGLELINE);
|
DT_VCENTER | DT_CENTER | DT_NOPREFIX | DT_SINGLELINE);
|
||||||
|
|
||||||
SelectObject(hDC,
|
SelectObject(hDC,
|
||||||
hPrevFont);
|
hPrevFont);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (infoPtr->MonitorInfo[Index].Flags & MSL_MIF_DISABLED)
|
if (infoPtr->MonitorInfo[Index].Flags & MSL_MIF_DISABLED)
|
||||||
|
@ -813,6 +847,41 @@ MonSelPaint(IN OUT PMONITORSELWND infoPtr,
|
||||||
hbOldBk);
|
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
|
static LRESULT CALLBACK
|
||||||
MonitorSelWndProc(IN HWND hwnd,
|
MonitorSelWndProc(IN HWND hwnd,
|
||||||
IN UINT uMsg,
|
IN UINT uMsg,
|
||||||
|
@ -873,9 +942,16 @@ MonitorSelWndProc(IN HWND hwnd,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case WM_RBUTTONDOWN:
|
||||||
|
{
|
||||||
|
if (!(infoPtr->ControlExStyle & MSLM_EX_SELECTONRIGHTCLICK))
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* fall through */
|
||||||
|
}
|
||||||
|
|
||||||
case WM_LBUTTONDBLCLK:
|
case WM_LBUTTONDBLCLK:
|
||||||
case WM_LBUTTONDOWN:
|
case WM_LBUTTONDOWN:
|
||||||
case WM_RBUTTONDOWN:
|
|
||||||
{
|
{
|
||||||
INT Index;
|
INT Index;
|
||||||
POINT pt;
|
POINT pt;
|
||||||
|
@ -902,6 +978,14 @@ MonitorSelWndProc(IN HWND hwnd,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case WM_RBUTTONUP:
|
||||||
|
{
|
||||||
|
MonSelContextMenu(infoPtr,
|
||||||
|
(SHORT)LOWORD(lParam),
|
||||||
|
(SHORT)HIWORD(lParam));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WM_GETDLGCODE:
|
case WM_GETDLGCODE:
|
||||||
{
|
{
|
||||||
INT virtKey;
|
INT virtKey;
|
||||||
|
@ -1081,6 +1165,14 @@ MonitorSelWndProc(IN HWND hwnd,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case MSLM_GETMONITORRECT:
|
||||||
|
{
|
||||||
|
Ret = (LRESULT)MonSelGetMonitorRect(infoPtr,
|
||||||
|
(INT)wParam,
|
||||||
|
(PRECT)lParam);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WM_CREATE:
|
case WM_CREATE:
|
||||||
{
|
{
|
||||||
infoPtr = (PMONITORSELWND) HeapAlloc(GetProcessHeap(),
|
infoPtr = (PMONITORSELWND) HeapAlloc(GetProcessHeap(),
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
/* Control extended styles */
|
/* Control extended styles */
|
||||||
#define MSLM_EX_ALLOWSELECTNONE 0x1
|
#define MSLM_EX_ALLOWSELECTNONE 0x1
|
||||||
#define MSLM_EX_ALLOWSELECTDISABLED 0x2
|
#define MSLM_EX_ALLOWSELECTDISABLED 0x2
|
||||||
|
#define MSLM_EX_HIDENUMBERONSINGLE 0x4
|
||||||
|
#define MSLM_EX_HIDENUMBERS 0x8
|
||||||
|
#define MSLM_EX_SELECTONRIGHTCLICK 0x10
|
||||||
|
|
||||||
/* MONSL_MONINFO Flags */
|
/* MONSL_MONINFO Flags */
|
||||||
#define MSL_MIF_DISABLED 0x1
|
#define MSL_MIF_DISABLED 0x1
|
||||||
|
@ -24,6 +27,13 @@ typedef struct _MONSL_MONNMHDR
|
||||||
MONSL_MONINFO MonitorInfo;
|
MONSL_MONINFO MonitorInfo;
|
||||||
} MONSL_MONNMHDR, *PMONSL_MONNMHDR;
|
} 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
|
typedef struct _MONSL_MONNMMONITORCHANGING
|
||||||
{
|
{
|
||||||
/* Used with MSLN_MONITORCHANGING */
|
/* Used with MSLN_MONITORCHANGING */
|
||||||
|
@ -52,7 +62,19 @@ typedef struct _MONSL_MONNMMONITORCHANGING
|
||||||
*
|
*
|
||||||
* lParam: PMONSL_MONNMHDR
|
* 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
|
* MSLM_SETMONITORSINFO
|
||||||
|
@ -146,7 +168,15 @@ typedef struct _MONSL_MONNMMONITORCHANGING
|
||||||
* Allow deselecting a monitor by clicking into
|
* Allow deselecting a monitor by clicking into
|
||||||
* unused areas of the control.
|
* unused areas of the control.
|
||||||
* * MSLM_EX_ALLOWSELECTDISABLED
|
* * 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.
|
* Returns non-zero value if successful.
|
||||||
*/
|
*/
|
||||||
|
@ -161,6 +191,20 @@ typedef struct _MONSL_MONNMMONITORCHANGING
|
||||||
*/
|
*/
|
||||||
#define MSLM_GETEXSTYLE (WM_USER + 0x19)
|
#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);
|
BOOL RegisterMonitorSelectionControl(IN HINSTANCE hInstance);
|
||||||
VOID UnregisterMonitorSelectionControl(IN HINSTANCE hInstance);
|
VOID UnregisterMonitorSelectionControl(IN HINSTANCE hInstance);
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,12 @@
|
||||||
#define ID_MENU_DISABLED 2102
|
#define ID_MENU_DISABLED 2102
|
||||||
#define ID_MENU_SELECTED 2103
|
#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 */
|
/* Settings Page */
|
||||||
|
|
||||||
#define IDS_PIXEL 2301
|
#define IDS_PIXEL 2301
|
||||||
|
|
|
@ -644,6 +644,106 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
|
||||||
break;
|
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:
|
case WM_DESTROY:
|
||||||
{
|
{
|
||||||
PDISPLAY_DEVICE_ENTRY Current = pGlobalData->DisplayDeviceList;
|
PDISPLAY_DEVICE_ENTRY Current = pGlobalData->DisplayDeviceList;
|
||||||
|
|
Loading…
Reference in a new issue