ACC2000: How to Use the GetSystemMetrics() API Call (210603)



The information in this article applies to:

  • Microsoft Access 2000

This article was previously published under Q210603
Advanced: Requires expert coding, interoperability, and multiuser skills.

This article applies to a Microsoft Access database (.mdb) and to a Microsoft Access project (.adp).

SUMMARY

In the Windows environment, various display resolutions may cause screens to appear out of proportion. As a developer, you can get the width and height of various elements of the window display by using the Windows application programming interface (API) function GetSystemMetrics(). Incorporating this function into an Access application gives you more information for designing the user interface. This article describes the GetSystemMetrics() API function and shows you how to call the function from Access.

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.

MORE INFORMATION

The Windows GetSystemMetrics() API function retrieves information about the system metrics (the width and height of various display elements of a particular window). The GetSystemMetrics() function can also return flags that indicate whether a mouse is present or if the meaning of the left and right mouse buttons have been reversed. System metrics are dependent upon the system display and may vary from display to display.

To use the GetSystemMetrics() functions, follow these steps:
  1. Create a new Access database.
  2. Create a new module.
  3. Place the following Declare statement in the Declarations section of a module:
    Declare Function GetSystemMetrics& Lib "User32" (ByVal nIndex&)   
    						
    NOTE: This Declare statement is case-sensitive.
  4. Depending on which window property you want to determine, you must define the correct constant to pass to the GetSystemMetrics() function. Following are sample declarations of the constants and their meaning. Constants by default are Private. If you want to place these constants in a global module so that they are available to the entire application, add Public to the beginning of the constant statement (Public Const SM_CXSCREEN = 0). For a complete list of the constants available for Windows 95 and 98, please refer to the Win32 Software Development Kit.

    Starting on the next line after the Declare statement, type the following functions in the Declarations section:
    Const SM_CXSCREEN = 0        ' Width of screen
    Const SM_CYSCREEN = 1        ' Height of screen
    Const SM_CXFULLSCREEN = 16   ' Width of window client area
    Const SM_CYFULLSCREEN = 17   ' Height of window client area
    Const SM_CYMENU = 15         ' Height of menu
    Const SM_CYCAPTION = 4       ' Height of caption or title
    Const SM_CXFRAME = 32        ' Width of window frame
    Const SM_CYFRAME = 33        ' Height of window frame
    Const SM_CXHSCROLL = 21      ' Width of arrow bitmap on
                                 '  horizontal scroll bar
    Const SM_CYHSCROLL = 3       ' Height of arrow bitmap on
                                 '  horizontal scroll bar
    Const SM_CXVSCROLL = 2       ' Width of arrow bitmap on
                                 '  vertical scroll bar
    Const SM_CYVSCROLL = 20      ' Height of arrow bitmap on
                                 '  vertical scroll bar
    Const SM_CXSIZE = 30         ' Width of bitmaps in title bar
    Const SM_CYSIZE = 31         ' Height of bitmaps in title bar
    Const SM_CXCURSOR = 13       ' Width of cursor
    Const SM_CYCURSOR = 14       ' Height of cursor
    Const SM_CXBORDER = 5        ' Width of window frame that cannot
                                 '  be sized
    Const SM_CYBORDER = 6        ' Height of window frame that cannot
                                 '  be sized
    Const SM_CXDOUBLECLICK = 36  ' Width of rectangle around the
                                 '  location of the first click. The
                                 '  second click must occur in the
                                 '  same rectangular location.
    Const SM_CYDOUBLECLICK = 37  ' Height of rectangle around the
                                 '  location of the first click. The
                                 '  second click must occur in the
                                 '  same rectangular location.
    Const SM_CXDLGFRAME = 7      ' Width of dialog frame window
    Const SM_CYDLGFRAME = 8      ' Height of dialog frame window
    Const SM_CXICON = 11         ' Width of icon
    Const SM_CYICON = 12         ' Height of icon
    Const SM_CXICONSPACING = 38  ' Width of rectangles the system
                                 ' uses to position tiled icons
    Const SM_CYICONSPACING = 39  ' Height of rectangles the system
                                 ' uses to position tiled icons
    Const SM_CXMIN = 28          ' Minimum width of window
    Const SM_CYMIN = 29          ' Minimum height of window
    Const SM_CXMINTRACK = 34     ' Minimum tracking width of window
    Const SM_CYMINTRACK = 35     ' Minimum tracking height of window
    Const SM_CXHTHUMB = 10       ' Width of scroll box (thumb) on
                                 '  horizontal scroll bar
    Const SM_CYVTHUMB = 9        ' Width of scroll box (thumb) on
                                 '  vertical scroll bar
    Const SM_DBCSENABLED = 42    ' Returns a non-zero if the current
                                 '  Windows version uses double-byte
                                 '  characters, otherwise returns
                                 '  zero
    Const SM_DEBUG = 22          ' Returns non-zero if the Windows
                                 '  version is a debugging version
    Const SM_MENUDROPALIGNMENT = 40
                                 ' Alignment of pop-up menus. If zero,
                                 '  left side is aligned with
                                 '  corresponding left side of menu-
                                 '  bar item. If non-zero, left side
                                 '  is aligned with right side of
                                 '  corresponding menu bar item
    Const SM_MOUSEPRESENT = 19   ' Non-zero if mouse hardware is
                                 '  installed
    Const SM_PENWINDOWS = 41     ' Handle of Pen Windows dynamic link
                                 '  library if Pen Windows is
                                 '  installed
    Const SM_SWAPBUTTON = 23     ' Non-zero if the left and right
                                 ' mouse buttons are swapped
    					
  5. Save the new module as MetricsCode.
  6. Create a new blank form with the following properties:
       Form: Test1
       -------------------------
       Caption: TestForm
       ControlSource: &none>
    
       Command button
       ---------------------------
       Name: Button0
       Caption: My Button
    
    					
  7. Set the OnClick property of the Button0 command button to the following event procedure:
    'The following call returns the height of the form's caption bar
    
    Private Sub Command0_Click()
      Dim HeightY As String
      HeightY = GetSystemMetrics(SM_CYCAPTION)
      MsgBox HeightY
    End Sub
    					
  8. View the form in Form view and click the command button. Note that you see the height of the form's caption bar in a message box.

REFERENCES

For more information about declaring functions, in the Visual Basic Editor, click Microsoft Visual Basic Help on the Help menu, type Declare Statement in the Office Assistant or the Answer Wizard, and then click Search to view the topic.

For more information about constants, in the Visual Basic Editor, click Microsoft Visual Basic Help on the Help menu, type Const Statement in the Office Assistant or the Answer Wizard, and then click Search to view the topic.

Modification Type:MinorLast Reviewed:10/11/2006
Keywords:kbhowto kbProgramming KB210603