Tricks of the Windows Game Programming Gurus:Windows GDI, Controls, and Last-Minute Gift Ideas

All ITKnowledge Source Code Search Tips Advanced Search |

| Tricks of the Windows Game Programming Gurus by Andre LaMothe Sams, Macmillan Computer Publishing ISBN: 0672313618 Pub Date: 09/27/99

Search this book:

Previous | Table of Contents | Next

The next function I want to show you is very general and can retrieve all kinds of cool information about Windows and the Desktop. It’s called `GetSystemMetrics()`:

    int GetSystemMetrics(int nIndex); // system metric or configuration

    ⇒setting to retrieve

`GetSystemMetrics()` is very powerful. What you do is send it the index of the data you want retrieved, as shown in Table 4.7, and it is returned. By the way, Table 4.7 is the longest table in the book. I really hate looking it up in the Help, so I’m going to break down and add it to the book for your convenience <BG>.

Table 4.7 System Metric Constants for `GetSystemMetrics()`

Value | Description
--- | ---

`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

`SM_CMOUSEBUTTO`NS | Number of buttons on mouse, or zero if no mouse is installed.
`SM_CXBORDER`, `SM_CYBORDER` | 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`, `SM_CYCURSOR` | 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_CXDOUBLECLK`, `SM_CYDOUBLECLK` | 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`, `SM_CYDRAG` | 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 enables the user to click and release the mouse button easily without unintentionally starting a drag operation.
`SM_CXEDGE`, `SM_CYEDGE` | Dimensions, in pixels, of a 3-D border. These are the 3-D counterparts of `SM_CXBORDER` and `SM_CYBORDER`.
`SM_CXFIXEDFRAME`, `SM_CYFIXEDFRAME` | 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.
`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` function with the `SPI_GETWORKAREA` value.
`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`, `SM_CYICON` | The default width and height, in pixels, of an icon. These values are typically 32×32, but can vary depending on the installed display hardware.
`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`, `SM_CYMAXIMIZED` | Default dimensions, in pixels, of a maximized top-level window.
`SM_CXMAXTRACK`, `SM_CYMAXTRACK` | 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`, `SM_CYMENUCHECK` | Dimensions, in pixels, of the default menu check mark bitmap.
`SM_CXMENUSIZE`, `SM_CYMENUSIZE` | Dimensions, in pixels, of menu bar buttons, such as multiple document (MDI) child close.
`SM_CXMIN`, `SM_CYMIN` | Minimum width and height, in pixels, of a window.
`SM_CXMINIMIZED`, `SM_CYMINIMIZED` | Dimensions, in pixels, of a normal minimized window.
`SM_CXMINSPACING, SM_CYMINSPACING` | 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`, `SM_CYSCREEN` | Width and height, in pixels, of the screen.
`SM_CXSIZE`, `SM_CYSIZE` | Width and height, in pixels, of a button in a window’s caption or title bar.
`SM_CXSIZEFRAME`, `SM_CYSIZEFRAME` | 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.
`SM_CXSMICON`, `SM_CYSMICON` | Recommended dimensions, in pixels, of a small icon. Small icons typically appear in window captions and in small icon view.
`SM_CXSMSIZE, SM_CYSMSIZE` | 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 the 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.

Previous | Table of Contents | Next

Copyright © Macmillan Computer Publishing, Inc.

Products | Contact Us | About Us | Privacy | Ad Info | Home
Use of this site is subject to certain Terms & Conditions, Copyright © 1996-2000 EarthWeb Inc. All rights reserved. Reproduction in whole or in part in any form or medium without express written permission of EarthWeb is prohibited. Read EarthWeb's privacy statement.