今回紹介するのは、ウィンドウをトレイに隠すコードと閉じるボタンでウィンドウを最小化するサンプルです。
このコードでは、まず「#NoTrayIcon」でトレイアイコンを非表示にしています。
トレイのイベントモードを有効にし、トレイアイコン上でマウスの左クリックが離された際に呼ばれるユーザー定義関数を定義しています。
ウィンドウを最小化した際に、タスクバーに表示したくない場合などに使用します。
サンプルコード
#NoTrayIcon
#include <GuiConstants.au3>
#include <Constants.au3>
Opt("TrayOnEventMode", 1);トレイのイベントモードを有効
Opt("TrayMenuMode", 1);トレイメニューなし
GUICreate("ウィンドウをトレイに隠す", 350, 200, -1, -1)
GUICtrlCreateLabel("ウィンドウをトレイに隠すサンプル", 0, 60, 350, 25, $SS_CENTER)
GUICtrlSetFont(-1, 10)
$Box1 = GUICtrlCreateCheckbox("閉じるボタンで最小化する", 90, 130)
GUISetState()
;トレイアイコン上でマウスの左クリックが離された際に呼ばれるユーザー定義関数を定義します。
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "TRAY_EVENT")
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_MINIMIZE; ウィンドウが最小化されたら
TrayState(1)
Case $msg = $GUI_EVENT_CLOSE
If _IsChecked($Box1) Then; 「閉じるボタンで最小化する」にチェックが付いていれば
TrayState(1)
Else; 「閉じるボタンで最小化する」にチェックが付いていなければ
Exit
EndIf
EndSelect
WEnd
Func TRAY_EVENT()
TrayState(0)
EndFunc ;==>TRAY_EVENT
Func TrayState($show)
If $show Then
GUISetState(@SW_HIDE); ウィンドウを隠す
TraySetState(1) ; トレイアイコンを表示
TraySetToolTip("ここをクリックするとウィンドウを表示します。")
Else
GUISetState(@SW_SHOW); ウィンドウを表示
TraySetState(2) ; トレイアイコンを隠す
EndIf
EndFunc ;==>TrayState
Func _IsChecked($iControlID)
Return BitAND(GUICtrlRead($iControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc ;==>_IsChecked
コードの説明
ウィンドウをトレイに隠す仕組み
ウィンドウの最小化のイベントが発生すると、GUISetState(@SW_HIDE) でウィンドウを非表示にし、TraySetState(1) でトレイにアイコンを表示します。
次にトレイアイコンで左クリックし、左クリックが離された時に GUISetState(@SW_SHOW) でウィンドウを表示し、TraySetState(2) でトレイアイコンを非表示にします。
閉じるボタンでウィンドウを最小化する仕組み
$Box1 = GUICtrlCreateCheckbox(“閉じるボタンで最小化する”, 90, 130) でチェックボックスを作成し、If _IsChecked($Box1) Then でチェックボックスがチェックされているかを判断しています。
もしもチェックされていれば、ユーザー定義関数 TrayState(1) を実行し、GUISetState(@SW_HIDE) でウィンドウを非表示にし、TraySetState(1) でトレイにアイコンを表示します。
BitAND(GUICtrlRead($iControlID), $GUI_CHECKED) = $GUI_CHECKED
BitAND(ビット演算のAND演算子)
GUICtrlRead($iControlID) でチェックの状態を返します。
チェックされていれば「1」を、チェックされていなければ「4」を返します。
変数 $GUI_CHECKED の値は「1」です。
変数 $GUI_UNCHECKED の値は「4」です。
チェックされていれば、「1」の 2進数は「0001」なので、「0001」AND「0001」=「1」という結果に。
チェックされていなければ、「4」の 2進数は「0100」なので、「0100」AND「0001」=「0」という結果になります。
コメント