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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0308
UNGAシングルクリックとダブルクリックの取得5解決


UNGA

リンク

2017/3/8(Wed) 15:37:52|NO.78426

シングルクリックとダブルクリックを区別して取得したいのですが、下のスクリプト
だと、シングルクリックが優先されてしまいダブルクリックが取得できません。
どのようにすればダブルクリックが取れますでしょうか。


#include "user32.as" #define WM_LBUTTONDOWN $0201 #define WM_LBUTTONDBLCLK $0203 #define WM_RBUTTONDOWN $0204 #define WM_RBUTTONDBLCLK $0206 #define WM_MBUTTONDOWN $0207 #define WM_MBUTTONDBLCLK $0209 screen 0 oncmd gosub *LBUTTON , WM_LBUTTONDOWN oncmd gosub *RBUTTON , WM_RBUTTONDOWN oncmd gosub *LDblClk , WM_LBUTTONDBLCLK GetClassLong hwnd, -26 SetClassLong hwnd, -26, stat | $0008 stop *LBUTTON dialog "LBUTTON" return *RBUTTON dialog "RBUTTON" return *LDblClk dialog "LDblClk" return



この記事に返信する


沢渡

リンク

2017/3/8(Wed) 20:56:14|NO.78445

ダイアログを表示しているせいで2回目のクリックが取得できなくなっているだけです。
dialog命令ではなく、mes命令でメッセージを表示すると、ちゃんと上手くいっているのがわかりますよ。



UNGA

リンク

2017/3/8(Wed) 21:09:08|NO.78446

ありがとうございます。

>ダイアログを表示しているせいで2回目のクリックが取得できなくなっているだけ
確かにそのようでした。

ところで、ダブルクリックした場合にもシングルクリックもまた取得してしまっていますが、
これをダブルクリックの取得だけに出来ないものでしょうか。シングルクリックの時の処理
ルーチンとダブルクリックしたときの処理ルーチンを分けたいのです。



kanahiron

リンク

2017/3/8(Wed) 21:42:08|NO.78450

WM_LBUTTONDBLCLKの前にWM_LBUTTONDOWNが飛んで来るのは仕様です
一回のクリックとダブルクリックを区別したい場合はWin32APIのTimer系の関数を使う必要があります

http://www.daccho-it.com/program/WinApi/sdclk.htm



UNGA

リンク

2017/3/10(Fri) 08:08:23|NO.78465

Timerはなかなか難解で使いこなせそうになかったので、下記のようなローテクで対応しました。
エレガントではありませんが、どうにか実現はできました。 いろいろ有難うございました。


#include "user32.as" #define WM_LBUTTONDOWN $0201 #define WM_LBUTTONDBLCLK $0203 #define WM_RBUTTONDOWN $0204 #define WM_RBUTTONDBLCLK $0206 #define WM_MBUTTONDOWN $0207 #define WM_MBUTTONDBLCLK $0209 screen 0 oncmd gosub *BUTTOND , WM_LBUTTONDOWN oncmd gosub *RBUTTON , WM_RBUTTONDOWN oncmd gosub *BUTTOND , WM_LBUTTONDBLCLK ; oncmd gosub *LDblClk , WM_LBUTTONDBLCLK GetClassLong hwnd, -26 SetClassLong hwnd, -26, stat | $0008 stop *BUTTOND if s { s=0 : w=1 : gosub *LDblClk :return } ;ダブルクリック s=1 await await 350 if w {w=0:return} gosub *LBUTTON ;シングルクリック s=0 return *RBUTTON mes "RBUTTON" return *LBUTTON mes "LBUTTON" return *LDblClk mes "LDblClk2" return



UNGA

リンク

2017/3/10(Fri) 08:08:53|NO.78466

ありがとうございました。



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