Center on Screen

Category: Application Features

Date: 02-16-2022

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:  (Jose Includes)
#Compiler PBWin 9, PBWin 10
#Compile EXE
#Dim All
%Unicode=1
#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
'Date: 03-10-2012


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