タスクバーを考慮してフォームを画面中央に(T) <TOP>
タスクバーの高さを考慮してフォームを画面中央に表示します。
FORMは、プロパティで可視なしに設定しておき起動時表示位置を確定後表示させます。
SystemParametersInfo システムパラメータ情報の取得
'================================================================ '= タスクバーを考慮してフォームを画面中央に '= MAINFORMは、可視なしに設定しておく
'================================================================ #include "Windows.bi" '------------------------------ 'WorkArea '------------------------------ Type RECT LEFT As Long TOP As Long RIGHT As Long BOTTOM As Long End Type ' システムパラメータ情報の取得API Declare Function API_SYSTEMPARAMETERSINFO& Lib "user32" Alias "SystemParametersInfoA" (ByVal UACTION&, ByVal UPARAM&, ByRef LPVPARAM As Any, ByVal FUWININI&) #define SPI_GETWORKAREA 48 '主モニターの有効なスクリーンのサイズを取得 Var Shared MAINFORM As Object Var Shared TEXT1 As Object MAINFORM.ATTACH GETHWND TEXT1.ATTACH GETDLGITEM("TEXT1") TEXT1.SETFONTNAME "MS ゴシック" TEXT1.SETFONTSIZE 14 '================================================================ '= '================================================================ Declare Sub MAINFORM_START edecl () Sub MAINFORM_START() Var CRLF$ As String Var RES As Long Var WORKAREA As RECT CRLF$ = Chr$(13,10) ' ワークエリア取得 RES = API_SYSTEMPARAMETERSINFO(SPI_GETWORKAREA, 0, WORKAREA, 0) SCRN_LEFT = (((WORKAREA.RIGHT - WORKAREA.LEFT) - MAINFORM.GETWIDTH) / 2) + WORKAREA.LEFT SCRN_TOP = (((WORKAREA.BOTTOM - WORKAREA.TOP) - MAINFORM.GETHEIGHT) / 2) + WORKAREA.TOP MAINFORM.MOVEWINDOW SCRN_LEFT, SCRN_TOP ' 位置決定後表示させる MAINFORM.SHOWWINDOW -1 TXT$ = "WorkArea.left = " & Format$(WORKAREA.LEFT ,"##,###") & CRLF$ TXT$ = TXT$ & "WorkArea.right = " & Format$(WORKAREA.RIGHT ,"##,###") & CRLF$ TXT$ = TXT$ & "WorkArea.top = " & Format$(WORKAREA.TOP ,"##,###") & CRLF$ TXT$ = TXT$ & "WorkArea.bottom = " & Format$(WORKAREA.BOTTOM ,"##,###") & CRLF$ TXT$ = TXT$ & "FormWidth = " & Format$(MAINFORM.GETWIDTH ,"##,###") & CRLF$ TXT$ = TXT$ & "FormHeight = " & Format$(MAINFORM.GETHEIGHT,"##,###") & CRLF$ TXT$ = TXT$ & "Scrn_left = " & Format$(SCRN_LEFT ,"##,###") & CRLF$ TXT$ = TXT$ & "Scrn_top = " & Format$(SCRN_TOP ,"##,###") & CRLF$ TEXT1.SETWINDOWTEXT TXT$ End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End