Date: 07-23-2010
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