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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0617
kanahiron【バグ?】 inputを無効化するとホイールの回転を認識しなくなる8解決


kanahiron

リンク

2012/6/17(Sun) 02:33:15|NO.47285


input あ,100,20 repeat 128 title "" + mousew await 16 loop objenable 0,0 repeat title "" + mousew await 16 loop *a

とりあえず、このプログラムを実行させてホイールをグリグリしていてください
途中でinputがobjenableで無効化されたあと、ホイールの回転を認識しなくなります
これはバグでしょうか?
途中でダイアログを挟むとホイールの回転は認識されます

バグなら修正をよろしくお願いします



この記事に返信する


kanahiron

リンク

2012/6/17(Sun) 02:44:18|NO.47286

尚、管理人様には報告しました
がしかし私以外の環境で再現性があるかわからないので、
こちらの掲示板に書き込ませて頂きました



kanahiron

リンク

2012/6/17(Sun) 03:07:30|NO.47287


*a
は不要ですね
最初buttonがある状態から探してinputが原因ということに気付いたので、
消し忘れていました



つやぴん

リンク

2012/6/17(Sun) 04:57:29|NO.47288

Win7 64bit環境で試してみました。

確かに途中で認識しなくなってますね。

バグかなぁ?



bensan

リンク

2012/6/17(Sun) 09:38:43|NO.47289

私のWindows7 64bitでもそうなりました。
なにかオブジェクトをつくって、それにフォーカスするといいみたいですね。

さてはバグなのか…



kanahiron

リンク

2012/6/17(Sun) 13:03:35|NO.47291

私はVista 32bit,7 64bitで確認しました
両方ともHSP3.3です



test

リンク

2012/6/17(Sun) 13:23:28|NO.47292

フォーカスが入力ボックスにあって、ウィンドウ本体にフォーカスがなくなったのが原因かもしれません。
次のようにしてフォーカスを戻すと反応するようになります。
#uselib "user32.dll"
#func SetFocus "SetFocus" int input あ,100,20 repeat 128 title "" + mousew await 16 loop objenable 0,0 SetFocus hwnd repeat title "" + mousew await 16 loop *a



test

リンク

2012/6/17(Sun) 18:33:09|NO.47294

読み返してみて解説が不足だと思いましたので、追加で解説させて頂きます。
#uselib "user32.dll"
というのは「user32.dllを使うよ」という宣言です。
dllの中には関数が入っていますので、その中からSetFocus関数を
#func SetFocus "SetFocus" int
で利用可能にしています。#funcの詳しい書式についてはF1で調べるとよいでしょう。 このuser32.dllというのはWindowsにもともと入っていますので、心置きなく使えます。

このSetFocus関数というのは、詳しくは調べて頂きたいですが、ウィンドウにフォーカスを移す関数です。第一引数のhwndというのは簡単にいうと現在のHSPのウィンドウを示すものですので、SetFocusにこれを教えることでHSPのウィンドウをアクティブにしてもらっています。

SetFocusを入れる位置は、じつはobjenableの直前でも直後でも構いません。原因はHSPのウィンドウそのものではなく中の入力ボックスにフォーカスがあたっていたことですので、フォーカスがHSPのウィンドウ本体に戻ってさえいればいいからです。



kanahiron

リンク

2012/6/17(Sun) 21:36:27|NO.47299

testさんありがとうございます
ホイールが使えないのはいま作ってるプログラムでは致命的なので、
解決方法を提示して下さってありがとうございます



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