Center on Screen

Category: Apps/Dialogs

Date: 07-21-2011

Return to Index


 
'Centers the dialog on the screen 
'Note the two "Dialog Get" lines - allows choice of centering in the
'screen client area or centering in the entire scree.
 
'Primary Code:
Sub CenterDialog
   If IsFalse(IsIconic(hDlg) Or IsZoomed(hDlg)) Then  'is neither minimized nor maximized
      Local sx As Long, sy As Long, dx As Long, dy As Long   'screen/client, dialog dimensions
      Desktop Get Client To sx,sy     'client size - use to center in client area
'      Desktop Get Size To sx,sy       'screen resolution - use to center in entire screen
      Dialog Get Size hDlg To dx, dy  'dialog height/width
      Dialog Set Loc hDlg, (sx - dx) / 2, (sy - dy) / 2
   End If
End Sub
 
 
'Compilable Example:
#Compile Exe
#Dim All
#Include "Win32API.inc"
Global hDlg as Dword
%IDC_Button = 100
Function PBMain() As Long
   Dialog New Pixels, 0, "Test Code",300,300,200,200, %WS_OverlappedWindow To hDlg
   Control Add Button, hDlg, %IDC_Button,"Push", 50,10,100,20
   Dialog Show Modal hDlg Call DlgProc
End Function
CallBack Function DlgProc() As Long
   If CB.Msg = %WM_Command AND CB.Ctl = %IDC_Button AND CB.Ctlmsg = %BN_Clicked Then
      CenterDialog
   End If
End Function
 
Sub CenterDialog
   If IsFalse(IsIconic(hDlg) Or IsZoomed(hDlg)) Then  'is neither minimized nor maximized
      Local sx As Long, sy As Long, dx As Long, dy As Long   'screen/client, dialog dimensions
      Desktop Get Client To sx,sy     'client size
      Desktop Get Size To sx,sy       'screen resolution
      Dialog Get Size hDlg To dx, dy  'dialog height/width
      Dialog Set Loc hDlg, (sx - dx) / 2, (sy - dy) / 2
   End If
End Sub
 
'gbs_00039


created by gbSnippets
http://www.garybeene.com/sw/gbsnippets.htm