ウインドウの操作          <TOP>


例ではForm2をHide・Show・ShowMinNoActive・Restoreさせます。

ShowWindow 指定されたウィンドウの表示状態を設定

SetWindowPos ウィンドウのサイズ、位置、および Z オーダーを設定

 

左:起動時 SetWindowPosでMainFormwo前面に出しています。    右:HIDEでFORM2を消しています。

 

左:SHOWMINNOACTIVE    右:FORM2はタスクバーに入っている状態    RESTOREでFORM2を元に戻しています。

 

 

'================================================================
'= ウインドウの操作
'=    (ShowWindow2.bas)
'================================================================
#include "Windows.bi"

' 指定されたウィンドウの表示状態を設定
Declare Function Api_ShowWindow& Lib "user32" Alias "ShowWindow" (ByVal hWnd&,ByVal nCmdShow&)

#define SW_HIDE 0                       '指定のウインドウを非表示にし他のウインドウをアクティブ化
#define SW_SHOW 5                       'ウインドウをアクティブ化し現在の位置とサイズで表示
#define SW_SHOWMINNOACTIVE 7            'ウインドウをアイコン化する。現在アクティブなウインドウはアクティブなままにする
#define SW_RESTORE 9                    'ウインドウをアクティブ化し表示。ウインドウがアイコン化または最大化されているときは元の位置とサイズに

' ウィンドウのサイズ、位置、および Z オーダーを設定。(ウィンドウの重なり順のことを「Zオーダー」といいZオーダーのトップに置くと一番手前に表示される)
Declare Function Api_SetWindowPos& Lib "user32" Alias "SetWindowPos" (ByVal hWnd&, ByVal hWndInsertAfter&, ByVal X&, ByVal Y&, ByVal CX&, ByVal CY&, ByVal uFlags&)

#define HWND_TOP 0                      'ウインドウをZオーダーの一番上に配置する
#define HWND_BOTTOM 1                   'ウインドウをウインドウリストの一番下に配置する
#define HWND_TOPMOST -1                 'ウインドウをウインドウリストの一番上に配置する
#define HWND_NOTOPMOST -2               'ウインドウをウインドウリストの一番上に配置する

#define SWP_SHOWWINDOW &H40             'ウインドウを表示する
#define SWP_NOSIZE &H1                  'ウインドウの現在のサイズを保持する
#define SWP_NOMOVE &H2                  'ウインドウの現在位置を保持する

Var Shared Form2 As Object

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var Ret As Long

    If Not (CheckObject(Form2)) Then
        Form2.CreateWindow "Form2", -1
    End If
    Ret = Api_SetWindowPos(GethWnd, HWND_TOPMOST, 0, 0, 0,0, SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var Ret As Long
    Ret = Api_ShowWindow(Form2.GethWnd, SW_HIDE)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    Var Ret As Long
    Ret = Api_ShowWindow(Form2.GethWnd, SW_SHOW)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button3_on edecl ()
Sub Button3_on()
    Var Ret As Long
    Ret = Api_ShowWindow(Form2.GethWnd, SW_SHOWMINNOACTIVE)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button4_on edecl ()
Sub Button4_on()
    Var Ret As Long
    Ret = Api_ShowWindow(Form2.GethWnd, SW_RESTORE)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button5_on edecl ()
Sub Button5_on()
    End
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End