ソースのダウンロード(4K)推奨

;右クリックで終了
#define BUTTON_W 90	;ボタンの幅
#define BUTTON_H 40	;ボタンの高さ
*main
;----------------変数の初期化-------------------
	button_x=100	;ボタンの左上のX座標
	button_y=50	;ボタンの左上のY座標

;----------------画面の準備-------------------
	buffer 2
	picload "button.bmp"	;バッファーにボタンの絵を読み込む
	gsel 0
*view
	pos button_x,button_y
	gcopy 2,0,0,BUTTON_W,BUTTON_H	;ボタンを表示

;----------------入力待ち-------------------
*kurikaesi
	click_stat=0
	await 1
	stick click_stat
	if click_stat==512 : end		;右ボタンが押された
	if click_stat!256 : goto *kurikaesi	;左ボタンが押されていない

;----------------どこでクリックされたか判定-------------------
	if mousex < button_x : goto *kurikaesi
	if mousex > (button_x+BUTTON_W) : goto *kurikaesi
	if mousey < button_y : goto *kurikaesi
	if mousey > (button_y+BUTTON_H) : goto *kurikaesi
	
	pos button_x,button_y
	gcopy 2,0,BUTTON_H,BUTTON_W,BUTTON_H	;押された画像に書き換える
	dialog "ボタンが押されました"

	goto *view
画面の準備までは問題ないと思います。
入力待ちでは、必ずチェックに使う変数(今回はclick_stat)を常に0を入れるようにしましょう。 そうしないと、二回目以降の動作が怪しくなります。そのときの状態をチェックする場合には 必ず、チェックする前にチェックに使う変数を初期化するということを忘れないでください。 忘れる期待通りに動く可能性が低くなりますよ。
クリックされた後、マウスが、ボタンの画像の上にあるかチェックします。不等式をよく見れば ボタンの画像の外にマウスがあるときに、入力待ちに戻ります。
最後に、画像を書き換えた後に、押された後の処理をすればよいわけです。ここでは また、画面を書き直しにはじめに戻っています。
■ 目次へ戻る ■

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル