Date: 02-16-2022
Return to Index
created by gbSnippets
'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
http://www.garybeene.com/sw/gbsnippets.htm