HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
1101
アイルー【緊急】ダブルクリックの取得について2未解決


アイルー

リンク

2010/11/1(Mon) 01:09:15|NO.35619

こんばんは。
お世話になっております。

緊急と書いてしまって申し訳ございません。
本日朝、作成しているものを提出しなければならなくなり、
現在修正しているところです。


ダブルクリックの取得について、
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」で処理を停止した後も、通常通り処理が行える

となります。

現在サンプルのソースを慌てて作成したため、動きがおかしいです。
修正が終わり次第、また記載させていただきます。

このような状態でお聞きしてしまい、申し訳ございません。
自分でも考えてみます。

よろしくお願いいたします。



この記事に返信する


アイルー

リンク

2010/11/1(Mon) 01:36:33|NO.35620

申し訳ございません。
慌てて投稿していたら、誤ってことを書いてしまっておりました。

NO.34442
http://hsp.tv/play/pforum.php?mode=all&num=34442 を参考にしながら、

はPrint Screenの処理であり、今回のダブルクリックとは関係ありません。

以上、追記とさせていただきます。



GENKI

リンク

2010/11/1(Mon) 02:18:32|NO.35622

> 本日朝、作成しているものを提出しなければならなくなり、

徹夜ですか。ご苦労様です。
締め切りまでの時間を考慮して最適と思えるアドバイスを…。
・実装しなくても大きな支障の無いものは実装しない。
・実装しないと大きな支障がある場合は、多少使いにくくても確実に知っている方法で代用する。
結構思い切って判断してしまう必要があります。
後悔は残ると思いますが、すでに手遅れです。無理せず切りましょう。

締め切りまでにやるべきことは、機能不足であってもきちんと問題なく動作するものに仕上げることです。
機能実装したけどまともに動かないでは話になりません。

また、理想的には締め切り前日にすべきことは調整やマニュアルの整備など、プログラム本体にはふれないことが望ましいです。
当日になってもプログラム修正をしている時点で間に合っていないんです。



ONION software Copyright 1997-2023(c) All rights reserved.