Centering A Form - Using Available Desktop Space
Posted
by Konstantin Komissarchik
on January 28th, 2004
A variety of ways exist for doing so, but most ignore some aspects of the environment such as the taskbar, the office launchbar, and even the app's own titlebar.
The following function takes all of this into account to center a form perfectly with the client area.
private Declare Function GetSystemMetrics Lib "user32" _
(byval nIndex as Long) as Long
private Declare Function GetWindowLong Lib "user32" alias _
"GetWindowLongA" (byval hwnd as Long, _
byval nIndex as Long) as Long
private Const SM_CXFULLSCREEN = 16
private Const SM_CYFULLSCREEN = 17
private Const SM_CYCAPTION = 4
public Sub CenterForm(Frm as Form)
Dim Left, Top as Integer
Left = Screen.TwipsPerPixelX * _
GetSystemMetrics(SM_CXFULLSCREEN) / 2 - Frm.Width / 2
Top = Screen.TwipsPerPixelY * _
(GetSystemMetrics(SM_CYFULLSCREEN) + _
GetSystemMetrics(SM_CYCAPTION)) / 2 - Frm.Height / 2
Frm.Move Left, Top
End Sub

Comments
i know a way quicker way to centre a form
Posted by 02goodacrel on 12/04/2005 10:04amForm1.Left = ((Screen.Width / 2) - (Form1.Width / 2)) Form1.Top = ((Screen.Height / 2) - (Form1.Height / 2))
ReplyDuh - you're all missing the point.
Posted by Legacy on 11/22/2002 12:00amOriginally posted by: Steve
Yes, well done guys. We all know about the screen object. But what my friends in the above posts have failed to spot is that usign the Screen object does not take into account the TaskBar or any other docked windows (like the MS Office Bar or the SmartSuite bar).
Using the API as described in the original article *IS THE CORRECT WAY* of centering a form in the CLIENT AREA.
Nuff sed.
ReplySomething Better
Posted by Legacy on 03/18/2002 12:00amOriginally posted by: Nesta
This you can add right into the Form Load Sub..
Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
One line for all your form centering needs.
Nesta28
ReplyGHB Studios
COOL
Posted by Legacy on 08/02/2001 12:00amOriginally posted by: Benjam�n Mariscal
It's cool
ReplyCentering a form on the given screen without using API
Posted by Legacy on 03/30/2000 12:00amOriginally posted by: Joseba del Arco
Reply