今回は、ロゴの表示と自分で作成したボタン画像をボタン代わりに使用するサンプルコードを紹介します。
ボタン画像は次のようなもので、拡張子は「jpg」を使用しています。
サンプルコード
#include <GUIConstantsEx.au3>; $GUI_EVENT_CLOSE
#include <ColorConstants.au3>; $COLOR_WHITE
$title = "Windows WAZA!"; タイトル
$Form = GUICreate($title, 340, 450, -1, -1); ウィンドウの作成
GUICtrlCreatePic(@ScriptDir & "\autoit.jpg", 10, 10, 320, 60, 0); ピクチャーコントロールの作成(ロゴ)
$ButtonA = GUICtrlCreatePic(@ScriptDir & "\A.jpg", 10, 80, 95, 86, 0x0100); ピクチャーコントロールの作成(ボタンA)
;0x0100 で画像をクリックした際にメッセージを取得します。
$ButtonU = GUICtrlCreatePic(@ScriptDir & "\U.jpg", 120, 80, 95, 86, 0x0100); ピクチャーコントロールの作成(ボタンU)
$ButtonT = GUICtrlCreatePic(@ScriptDir & "\T.jpg", 230, 80, 95, 86, 0x0100); ピクチャーコントロールの作成(ボタンT)
$ButtonO = GUICtrlCreatePic(@ScriptDir & "\O.jpg", 10, 176, 95, 86, 0x0100); ピクチャーコントロールの作成(ボタンO)
GUISetBkColor($COLOR_WHITE); ウィンドウの背景色を設定
GUISetState(@SW_SHOW); ウィンドウを表示
While 1
$msg = GUIGetMsg(); ウィンドウからメッセージを取得
Select
Case $msg = $GUI_EVENT_CLOSE; xボタンが押されたら
Exit
Case $msg = $ButtonA; $ButtonA が押されたら
_Button($ButtonA); ユーザー定義関数_Button() を実行します。
MsgBox(0, 0, "ボタン A を押しました"); メッセージボックスを表示します。
Case $msg = $ButtonU
_Button($ButtonU)
MsgBox(0, 0, "ボタン U を押しました")
Case $msg = $ButtonT
_Button($ButtonT)
MsgBox(0, 0, "ボタン T を押しました")
Case $msg = $ButtonO
_Button($ButtonO)
MsgBox(0, 0, "ボタン O を押しました")
EndSelect
WEnd
Func _Button($btn); ボタンの位置を取得し、一度位置を移動してからすぐに元の位置に戻します。
Local $iPos = ControlGetPos($title, "", $btn); ボタンの位置を取得
GUICtrlSetPos($btn, $iPos[0] + 5, $iPos[1] + 5); ボタンの位置を移動
Sleep(100); スリープ
GUICtrlSetPos($btn, $iPos[0], $iPos[1]); ボタンの位置を元に戻します。
EndFunc ;==>_Button
サンプルコードの解説
ウィンドウを作成し、GUICtrlCreatePic() 関数(ピクチャーコントロールの作成)でウィンドウにロゴ画像とボタン画像を追加しています。
GUICtrlCreatePic (ファイル名, 左, 上, 幅, 高さ, スタイル = -1 , 拡張スタイル = -1)
GUICtrlCreatePic 関数のスタイルに「0x0100」を設定しています。
「0x0100」を設定することで、ボタンがクリックされた時に、メッセージを取得することができるようになります。
0x0100($SS_NOTIFY) ,こちらはデフォルトのスタイルなので、次のように記述しなくても同じ動作をします。
$ButtonA = GUICtrlCreatePic(@ScriptDir & "\A.jpg", 10, 80, 95, 86)
ユーザー定義関数
ボタンの位置を取得し、一度位置を移動してからすぐに元の位置に戻すユーザー定義関数を作成しています。
Func _Button($btn)
Local $iPos = ControlGetPos($title, “”, $btn) ボタンの位置を取得して変数 $iPos に値を代入しています。
ウィンドウ内のコントロールの位置とサイズを取得します。
$aArray = ControlGetPos ( "タイトル", "説明", コントロルID)
返し値
$aArray[0] = X 方向
$aArray[1] = Y 方向
$aArray[2] = 幅
$aArray[3] = 高さ
$iPos[0] が x方向、$iPos[1] が y 方向になります。
GUICtrlSetPos($btn, $iPos[0] + 5, $iPos[1] + 5)
ボタンの位置を5ずつ移動します。
Sleep(100)
ボタンの移動を視覚化するためにスリープを入れます。
スリープを入れないと、ボタンの移動が見えません。
GUICtrlSetPos($btn, $iPos[0], $iPos[1])
移動したボタンの位置を元に戻します。
EndFunc ;==>_Button
この状態でボタンをクリックすると、クリックした瞬間ボタンが右斜め下に移動し、すぐに元の位置に戻ります。
ウィンドウの背景色
GUISetBkColor($COLOR_WHITE)
記事の上にある「ボタン画像A」を見るとわかるように、ボタン画像は四角であり、四隅が白くなっています。
このボタンを丸く見せるために、ウィンドウの背景色を四隅の色と同じ白に設定しています。
サンプルを用意しましたので、ダウンロードして確認してみてください。
zipファイルの内容
- 画像を使ったボタンのサンプル.au3
- autoit.jpg
- A.jpg
- u.jpg
- T.jpg
- O.jpg
コメント(降順)