GetSystemMetrics
The GetSystemMetrics
function retrieves various system metrics and system configuration settings.
System
metrics are the dimensions (widths and heights) of Windows display elements.
All dimensions retrieved by GetSystemMetrics are in pixels.
int GetSystemMetrics(
int nIndex |
// system metric or
configuration setting to retrieve |
); |
|
Parameters
nIndex
Specifies the
system metric or configuration setting to retrieve. All SM_CX* values are
widths. All SM_CY* values are heights. The following values are defined:
Value |
Meaning |
SM_ARRANGE |
Flags
specifying how the system arranged minimized windows. For more information
about minimized windows, see the following Remarks section. |
SM_CLEANBOOT |
Value that
specifies how the system was started: 0 Normal boot 1 Fail-safe
boot 2 Fail-safe
with network boot Fail-safe boot (also called SafeBoot) bypasses the
user s startup files. |
SM_CMOUSEBUTTONS |
Number of
buttons on mouse, or zero if no mouse is installed. |
SM_CXBORDER,
|
The width
and height, in pixels, of a window border. This is equivalent to the
SM_CXEDGE value for windows with the 3-D look. |
SM_CXCURSOR,
|
Width and
height, in pixels, of a cursor. These are the cursor dimensions supported by
the current display driver. The system cannot create cursors of other sizes. |
SM_CXDLGFRAME, |
Same as
SM_CXFIXEDFRAME and SM_CYFIXEDFRAME. |
SM_CXDOUBLECLK,
|
Width and
height, in pixels, of the rectangle around the location of a first click in a
double-click sequence. The second click must occur within this rectangle for
the system to consider the two clicks a double-click. (The two clicks must
also occur within a specified time.) |
SM_CXDRAG, |
Width and
height, in pixels, of a rectangle centered on a drag point to allow for
limited movement of the mouse pointer before a drag operation begins. This
allows the user to click and release the mouse button easily without
unintentionally starting a drag operation. |
SM_CXEDGE, |
Dimensions,
in pixels, of a 3-D border. These are the 3-D counterparts of SM_CXBORDER and
SM_CYBORDER. |
SM_CXFIXEDFRAME, |
Thickness,
in pixels, of the frame around the perimeter of a window that has a caption
but is not sizable. SM_CXFIXEDFRAME is the width of the horizontal border and
SM_CYFIXEDFRAME is the height of the vertical border. Same as
SM_CXDLGFRAME and SM_CYDLGFRAME. |
SM_CXFRAME, |
Same as
SM_CXSIZEFRAME and SM_CYSIZEFRAME. |
SM_CXFULLSCREEN,
SM_CYFULLSCREEN |
Width and
height of the client area for a full-screen window. To get the coordinates of
the portion of the screen not obscured by the tray, call the SystemParametersInfo |
SM_CXHSCROLL,
SM_CYHSCROLL |
Width, in
pixels, of the arrow bitmap on a horizontal scroll bar; and height, in
pixels, of a horizontal scroll bar. |
SM_CXHTHUMB |
Width, in pixels,
of the thumb box in a horizontal scroll bar. |
SM_CXICON, |
The default
width and height, in pixels, of an icon. These values are typically 32x32,
but can vary depending on the installed display hardware. The LoadIcon |
SM_CXICONSPACING,
SM_CYICONSPACING |
Dimensions,
in pixels, of a grid cell for items in large icon view. Each item fits into a
rectangle of this size when arranged. These values are always greater than or
equal to SM_CXICON and SM_CYICON. |
SM_CXMAXIMIZED, |
Default
dimensions, in pixels, of a maximized top-level window. |
SM_CXMAXTRACK, |
Default
maximum dimensions, in pixels, of a window that has a caption and sizing
borders. The user cannot drag the window frame to a size larger than these
dimensions. A window can override these values by processing the
WM_GETMINMAXINFO message. |
SM_CXMENUCHECK, |
Dimensions,
in pixels, of the default menu check-mark bitmap. |
SM_CXMENUSIZE, |
Dimensions,
in pixels, of menu bar buttons, such as multiple document (MIDI) child close. |
SM_CXMIN, |
Minimum
width and height, in pixels, of a window. |
SM_CXMINIMIZED, |
Dimensions,
in pixels, of a normal minimized window. |
SM_CXMINSPACING |
Dimensions,
in pixels, of a grid cell for minimized windows. Each minimized window fits
into a rectangle this size when arranged. These values are always greater
than or equal to SM_CXMINIMIZED and SM_CYMINIMIZED. |
SM_CXMINTRACK,
SM_CYMINTRACK |
Minimum
tracking width and height, in pixels, of a window. The user cannot drag the
window frame to a size smaller than these dimensions. A window can override
these values by processing the WM_GETMINMAXINFO message. |
SM_CXSCREEN,
|
Width and
height, in pixels, of the screen. |
SM_CXSIZE, |
Width and
height, in pixels, of a button in a window's caption or title bar. |
SM_CXSIZEFRAME, |
Thickness,
in pixels, of the sizing border around the perimeter of a window that can be
resized. SM_CXSIZEFRAME is the width of the horizontal border and
SM_CYSIZEFRAME is the height of the vertical border. Same as
SM_CXFRAME and SM_CYFRAME. |
SM_CXSMICON, |
Recommended
dimensions, in pixels, of a small icon. Small icons typically appear in
window captions and in small icon view. |
SM_CXSMSIZE |
Dimensions,
in pixels, of small caption buttons. |
SM_CXVSCROLL,
SM_CYVSCROLL |
Width, in
pixels, of a vertical scroll bar; and height, in pixels, of the arrow bitmap
on a vertical scroll bar. |
SM_CYCAPTION |
Height, in
pixels, of normal caption area. |
SM_CYKANJIWINDOW |
For
double-byte character set versions of Windows, height, in pixels, of the
Kanji window at the bottom of the screen. |
SM_CYMENU |
Height, in
pixels, of single-line menu bar. |
SM_CYSMCAPTION |
Height, in
pixels, of a small caption. |
SM_CYVTHUMB |
Height , in
pixels, of the thumb box in a vertical scroll bar. |
SM_DBCSENABLED |
TRUE or
nonzero if the double-byte character set (DBCS) version of USER.EXE is
installed; FALSE, or zero otherwise. |
SM_DEBUG |
TRUE or
nonzero if the debugging version of USER.EXE is installed; FALSE, or zero,
otherwise. |
SM_MENUDROPALIGNMENT |
TRUE, or
nonzero if drop-down menus are right-aligned relative to the corresponding
menu-bar item; FALSE, or zero if they are left-aligned. |
SM_MIDEASTENABLED |
TRUE if the
system is enabled for Hebrew/Arabic languages. |
SM_MOUSEPRESENT |
TRUE or
nonzero if a mouse is installed; FALSE, or zero, otherwise. |
SM_MOUSEWHEELPRESENT |
Windows
NT only: TRUE or nonzero if a mouse
with a wheel is installed; FALSE, or zero, otherwise. |
SM_NETWORK |
The least
significant bit is set if a network is present; otherwise, it is cleared. The
other bits are reserved for future use. |
SM_PENWINDOWS |
TRUE or
nonzero if the Microsoft Windows for Pen computing extensions are installed;
zero, or FALSE, otherwise. |
SM_SECURE |
TRUE if
security is present, FALSE otherwise. |
SM_SHOWSOUNDS |
TRUE or
nonzero if the user requires an application to present information visually
in situations where it would otherwise present the information only in
audible form; FALSE, or zero, otherwise. |
SM_SLOWMACHINE |
TRUE if the
computer has a low-end (slow) processor, FALSE otherwise. |
SM_SWAPBUTTON |
TRUE or
nonzero if the meanings of the left and right mouse buttons are swapped;
FALSE, or zero, otherwise. |
Return Values
If the
function succeeds, the return value is the requested system metric or
configuration setting.
If the
function fails, the return value is zero. GetLastError does not provide
extended error information.
Remarks
System
metrics may vary from display to display.
The
SM_ARRANGE setting specifies how the system arranges minimized windows, and
consists of a starting position and a direction. The starting position can be
one of the following values.
Value |
Meaning |
ARW_BOTTOMLEFT |
Start at
lower-left corner of screen (default position). |
ARW_BOTTOMRIGHT |
Start at
lower-right corner of screen. Equivalent to ARW_STARTRIGHT. |
ARW_HIDE |
Hide
minimized windows by moving them off of the visible area of the screen. |
ARW_TOPLEFT |
Start at
upper-left corner of screen. Equivalent to ARV_STARTTOP. |
ARW_TOPRIGHT |
Start at
upper-right corner of screen. Equivalent to ARW_STARTTOP | SRW_STARTRIGHT. |
The direction
in which to arrange can be one of the following values.
Value |
Meaning |
ARW_DOWN |
Arrange
vertically, top to bottom. |
ARW_LEFT |
Arrange
horizontally, left to right. |
ARW_RIGHT |
Arrange
horizontally, right to left. |
ARW_UP |
Arrange
vertically, bottom to top. |