●方法1:チェックボックスの状態をループで監視する
メリット:簡単
デメリット:ループで監視するので、ループの待機時間ぶんだけラグが発生する
screen 0
chkbox "チェック", piyo
repeat
// 1回だけということなのでbreakして終わる
if (piyo == 1) : break
wait 10
loop
// hoge に行く。hogeの先で止まるから1回しか実行されない
goto *hoge
stop
*hoge
dialog "チェックが押されました"
stop
●方法2:HSPの標準ボタンをチェックボックスにしてしまう (ボタンスタイルの変更)
メリット:押した瞬間だけ処理が実行されるのでラグが無い。さらにCPU負荷も低い
デメリット:初心者には恐らく仕組みが分からない。「1回だけ」という制約だと場合分けが必要なので、少々面倒
#include "user32.as"
#define global GWL_STYLE $FFFFFFF0
#define global WS_CHILD $40000000
#define global WS_VISIBLE $10000000
#define global BS_AUTOCHECKBOX $00000003
screen 0
button goto "チェック", *hoge
hCheck = objinfo_hwnd(stat) //ウィンドウハンドル取得
// ボタンスタイルでBS_AUTOCHECKBOXを指定
SetWindowLong hCheck, GWL_STYLE, WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX
stop
// 注意:この*hogeへはチェックボックスがクリックされるたびに飛んできます
*hoge
// 最初の一回だけ
if (pressed == 0) {
pressed = 1
dialog "チェックが押されました"
}
stop