reactos/dll/cpl/desk/monslctl.h

215 lines
5.9 KiB
C

#pragma once
/* 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
#define MSLM_EX_SELECTBYNUMKEY 0x20
#define MSLM_EX_SELECTBYARROWKEY 0x40
/* MONSL_MONINFO Flags */
#define MSL_MIF_DISABLED 0x1
typedef struct _MONSL_MONINFO
{
POINT Position;
SIZE Size;
DWORD Flags; /* MSL_MIF_* */
LPARAM lParam;
} MONSL_MONINFO, *PMONSL_MONINFO;
typedef struct _MONSL_MONNMHDR
{
NMHDR hdr;
INT Index;
/* NOTE: MonitorInfo is only valid if Index >= 0 */
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 */
MONSL_MONNMHDR hdr;
INT PreviousSelected;
BOOL AllowChanging;
} MONSL_MONNMMONITORCHANGING, *PMONSL_MONNMMONITORCHANGING;
/*
* MSLN_MONITORCHANGING
* This notification code is sent through WM_NOTIFY before another monitor
* can be selected. This notification is not sent in response to a
* MSLM_SETCURSEL message.
*
* lParam: PMONSL_MONNMMONITORCHANGING
* Change AllowChanging to FALSE to prevent the new monitor to
* be selected.
*/
#define MSLN_MONITORCHANGING 101
/*
* MSLN_MONITORCHANGED
* This notification code is sent through WM_NOTIFY after a new monitor
* was selected. This notification is not sent in response to a
* MSLM_SETCURSEL message.
*
* lParam: PMONSL_MONNMHDR
*/
#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
* wParam: DWORD
* Count of MONSL_MONINFO structures provided as lParam.
* lParam: PMONSL_MONINFO
* Array of wParam MONSL_MONINFO structures.
*
* Returns non-zero value if successful.
*/
#define MSLM_SETMONITORSINFO (WM_USER + 0x10)
/*
* MSLM_GETMONITORSINFO
* wParam: DWORD
* Length of MONSL_MONINFO array buffer provided in lParam.
* lParam: PMONSL_MONINFO
* Array of wParam MONSL_MONINFO structures
*
* Returns number of structures copied.
*/
#define MSLM_GETMONITORSINFO (WM_USER + 0x11)
/*
* MSLM_GETMONITORINFOCOUNT
* wParam: Ignored.
* lParam: Ignored.
*
* Returns number of monitors.
*/
#define MSLM_GETMONITORINFOCOUNT (WM_USER + 0x12)
/*
* MSLM_HITTEST
* wParam: PPOINT
* Pointer to a POINT structure specifying the coordinates
* relative to the client area of the control.
* lParam: Ignored.
*
* Returns the index of the monitor at this point, or -1.
*/
#define MSLM_HITTEST (WM_USER + 0x13)
/*
* MSLM_SETCURSEL
* wParam: INT
* Selects the monitor with this index. Pass -1 to clear the selection.
* lParam: Ignored.
*
* Returns a non-zero value if successful.
*/
#define MSLM_SETCURSEL (WM_USER + 0x14)
/*
* MSLM_GETCURSEL
* wParam: Ignored.
* lParam: Ignored.
*
* Returns the index of the selected monitor, or -1 if none is currently selected.
*/
#define MSLM_GETCURSEL (WM_USER + 0x15)
/*
* MSLM_SETMONITORINFO
* wParam: INT
* Index of the monitor information that is queried.
* lParam: PMONSL_MONINFO
* Pointer to a MONSL_MONINFO structures.
*
* Returns non-zero value if successful.
*/
#define MSLM_SETMONITORINFO (WM_USER + 0x16)
/*
* MSLM_GETMONITORINFO
* wParam: INT
* Index of the monitor information to be changed.
* lParam: PMONSL_MONINFO
* Pointer to a MONSL_MONINFO structures.
*
* Returns non-zero value if successful.
*/
#define MSLM_GETMONITORINFO (WM_USER + 0x17)
/*
* MSLM_SETEXSTYLE
* wParam: Ignored.
* lParam: DWORD
* Can be a combination of the following flags:
* * MSLM_EX_ALLOWSELECTNONE
* Allow deselecting a monitor by clicking into
* unused areas of the control.
* * MSLM_EX_ALLOWSELECTDISABLED
* 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.
* * MSLM_EX_SELECTBYNUMKEY
* Allows selecting a monitor by using the keys
* '1' to '9'.
* * MSLM_EX_SELECTBYARROWKEY
* Allows selecting a monitor using the arrow keys.
*
* Returns non-zero value if successful.
*/
#define MSLM_SETEXSTYLE (WM_USER + 0x18)
/*
* MSLM_GETEXSTYLE
* wParam: Ignored.
* lParam: Ignored
*
* 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);