Microsoft KB Archive/154823

= How To Determine the Size of the Desktop Area =

Article ID: 154823

Article Last Modified on 7/1/2004

-

APPLIES TO


 * Microsoft Visual Basic 6.0 Learning Edition
 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition
 * Microsoft Visual Basic 5.0 Control Creation Edition
 * Microsoft Visual Basic 5.0 Learning Edition
 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition
 * Microsoft Visual Basic 4.0 Standard Edition
 * Microsoft Visual Basic 4.0 Professional Edition
 * Microsoft Visual Basic 4.0 32-Bit Enterprise Edition

-



This article was previously published under Q154823



SUMMARY
It is often useful to determine the size and position of the display area taking the system tray into account. There are at least two methods to obtain this information: One requires the use of an OCX, while another makes a call to the Win32 API. This article demonstrates the step-by-step approaches to both of these methods.



Method 1
NOTE: In Microsoft Visual Basic 4.0, the SYSINFO.OCX control is in the \VB4\TOOLS\SYSINFO folder of the Visual Basic CD-ROM. It does not ship with the diskette version, and it is not automatically installed by Visual Basic Setup. Copy SYSINFO.OCX to the \WINDOWS\SYSTEM folder, and register it with REGOCX32.EXE. In Microsoft Visual Basic 5.0 and later, SYSINFO.OCX is installed by default.

Use the SYSINFO.OCX control in your project. It has a number of useful properties, four of which disclose the size and position of the desktop area in twips. Follow the steps below:

 Start Visual Basic. Form1 is created by default. Add a Command button to Form1. From the Tools menu, choose Custom Controls and check the "Microsoft System Info" component. If the component is not listed, click the browse button and locate SYSINFO.OCX. Add a SysInfo control to Form1.  Add the following code to the Command1_Click event: Private Sub Command1_Click

With SysInfo1 Print "WorkAreaLeft: " & .WorkAreaLeft / Screen.TwipsPerPixelX Print "WorkAreaTop: " & .WorkAreaTop / Screen.TwipsPerPixelY Print "WorkAreaWidth: " & .WorkAreaWidth / Screen.TwipsPerPixelX Print "WorkAreaHeight: " & .WorkAreaHeight / Screen.TwipsPerPixelY End With

End Sub

 Choose Start from the Run menu, or press the F5 key to run the project. Click the Command button to observe the size of the work area.</li></ol>

Method 2
The SystemParametersInfo function has many uses, including the ability to determine the size and position of the desktop. Follow the steps below:

<ol> Start Visual Basic. Form1 is created by default.</li> From the Insert menu, choose Module to add a single code module to the project. Module1 is created by default.</li>  Add the following code to Module1: Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type

Public Const SPI_GETWORKAREA = 48

Declare Function SystemParametersInfo Lib "user32" _ Alias "SystemParametersInfoA" (ByVal uAction As Long, _       ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) _ As Long

</li> Add a Command button to Form1.</li>  Add the following code to the Command1_Click event: Private Sub Command1_Click

Dim lRet As Long Dim apiRECT As RECT

lRet = SystemParametersInfo(SPI_GETWORKAREA, vbNull, apiRECT, 0)

If lRet Then Print "WorkAreaLeft: " & apiRECT.Left Print "WorkAreaTop: " & apiRECT.Top Print "WorkAreaWidth: " & apiRECT.Right - apiRECT.Left Print "WorkAreaHeight: " & apiRECT.Bottom - apiRECT.Top Else Print "Call to SystemParametersInfo failed." End If

End Sub

</li> Choose Start from the Run menu, or press the F5 key to run the project.</li> Click the Command button to observe the size of the work area.</li></ol>

<div class="references_section">