ウィンドウの描画をロック・解除          <TOP>


LockWindowUpdate 指定されたウィンドウ内での描画を無効または有効にする
GetDesktopWindow Windowsのデスクトップウィンドウを識別
 

 
'================================================================
'= ウィンドウの描画をロック・解除
'=    (LockWindowUpdate.bas)
'================================================================
#include "Windows.bi"

' 指定されたウィンドウ内での描画を無効または有効にする
Declare Function Api_LockWindowUpdate& Lib "user32" Alias "LockWindowUpdate" (ByVal hwndLock&)

' Windowsのデスクトップウィンドウを識別。返されるポインタは、一時的なポインタ。後で使用するために保存しておくことはできない
Declare Function Api_GetDesktopWindow& Lib "user32" Alias "GetDesktopWindow" ()

Var Shared Timer1 As Object
Var Shared Button1 As Object

Timer1.Attach GetDlgItem("Timer1")
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Timer1.SetInterval 1000
    Timer1.Enable 0
End Sub

'================================================================
'= ロック実行
'================================================================
Declare Sub Freeze ()
Sub Freeze()
    Var Ret As Long

    Ret = Api_LockWindowUpdate(Api_GetDesktopWindow)
End Sub

'================================================================
'= ロック解除
'================================================================
Declare Sub Defrost ()
Sub Defrost()
    Var Ret As Long

    Ret = Api_LockWindowUpdate(0)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    A% = MessageBox("", "10秒間ロックします!", 0, 2)

    EnableWindow 0

    Timer1.Enable -1
End Sub

'================================================================
'=
'================================================================
Declare Sub Timer1_Timer edecl ()
Sub Timer1_Timer()
    Timer1.Enable 0

    Defrost

    A% = MessageBox("", "ロックを解除します!", 0, 2)

    EnableWindow -1
End Sub

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