お世話になっております。
緊急と書いてしまって申し訳ございません。
本日朝、作成しているものを提出しなければならなくなり、
現在修正しているところです。
ダブルクリックの取得について、
NO.34442
http://hsp.tv/play/pforum.php?mode=all&num=34442
を参考にしながら、
NO.34568のような感じですすめておりました。
http://hsp.tv/play/pforum.php?mode=all&num=34568
NO.34568で教えていただいたように、
objimageを使用時、buttonの後にhButton=objinfo(stat, 2)と指定することにより、
ダブルクリックの取得ができるようになりました。
しかしながら、取得はできるのですが、そこで処理を止めることができません。
イメージ的には、ダブルクリックを取得した時点で、一旦処理を停止というように考えています。
そうなりますと、フラグを作成してということになるのではと考えているのですが、
気ばかり焦り、うまく動作させることができません。
自分でも考えていくつもりなのですが、取り急ぎ時間に追われてしまっているため、
よろしければお力をお貸しいただけませんでしょうか。
サンプルソースを作成致しました。(ちょっと動きがおかしいのですが…)
#include "user32.as"
/* ダブルクリック判定 */ GetClassLong hwnd, -26 SetClassLong hwnd, -26, stat | $8 oncmd gosub *lButtonDoubleClick, $0203 // WM_LBUTTONDBLCLK // 子からのダブルクリックの処理の設定 #define WM_COMMAND 0x0111 #define set_notify( %1 ) \ GetWindowLong %1, -16 : \ SetWindowLong %1, -16, stat | 0x00004000 // BS_NOTIFY oncmd gosub *onCommand, WM_COMMAND // 子もダブルクリック受付 GetClassLong hButton, -26 SetClassLong hButton, -26, stat | 0x08 *top onexit gosub *exit // プログラムの終了処理 // 画像読込用バッファ作成を作成 buffer 7 : picload "sozai\\button_menu.bmp" // サムネイル用ウィンドウID制御 if ginfo_act == 5 { gsel ginfo_act, -1 : } screen 0, 800, 600 : cls // ウィンドウの初期化 /* ボタン */ objsize 250, 50 // ボタンサイズ objimage 7, 0, 0, 0, 100, 0, 100 button goto "", *main hButton = objinfo(stat, 2) stop *main screen 3 mes "main" stop /* プログラムの終了処理 */ *exit // ウィンドウIDが0以外はウィンドウを非表示 if ginfo_act == 0 { end } else : if (ginfo_act == 3) or (ginfo_act == 4) or (ginfo_act == 5) { gsel ginfo_act, -1 } /* 親ウィンドウ左ボタンクリック検出 */ *lButtonDoubleClick dialog "ダブルクリックは使用できません。\nシングルクリックで操作してください。" return /* 左ボタンクリック */ *onCommand if ( lparam == hButton ) { code = ( (wparam>>16) & 0xffff ) // hiword switch( code ) case 0 // BN_CLICKED swbreak case 5 //BN_DOUBLECLICKED dialog "ダブルクリックは使用できません。\nシングルクリックで操作してください。" swbreak swend } return
やりたいこととしては、
1.「*top」内のボタンをダブルクリックした場合は、「dialog」でメッセージを表示し、
そこで処理を止める。(「*main」画面は表示しない)
2.「1」で処理を停止した後も、通常通り処理が行える
となります。
現在サンプルのソースを慌てて作成したため、動きがおかしいです。
修正が終わり次第、また記載させていただきます。
このような状態でお聞きしてしまい、申し訳ございません。
自分でも考えてみます。
よろしくお願いいたします。