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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0215
ぴよクリックされたオブジェクトを検出2解決


ぴよ

リンク

2020/2/15(Sat) 17:18:57|NO.89489

はじめまして。
ウィンドウ内に複数オブジェクトが存在しています。

onclickでは、「オブジェクトをクリックした時」に割り込みできません。
あくまで「ウィンドウをクリックした時」に割り込む機能だと思っています。

任意のタイミングで、「gsel -1」で取得すればよいのは、調べてあります。


しかし、任意のタイミングではなく、ユーザーのクリック時に取得したいので、
onkeyやonclickのように、
ユーザーアクションによるクリックに反応して選択オブジェクトを取得するには、
ループでリアルタイム監視するしか方法が思いつきません。

オブジェクトをクリックした時に、割り込みで検出する方法があれば、
ぜひ教えていただきたいと思います。
よろしくおねがいします。



この記事に返信する


沢渡

リンク

2020/2/15(Sat) 19:25:42|NO.89490

>任意のタイミングで、「gsel -1」で取得すればよいのは、調べてあります。
gsel -1ではなくてobjsel -1では?

割り込みで、ということで、ウィンドウメッセージのWM_COMMANDで割り込ませ、
オブジェクトのハンドルと通知コードを調べる形にしてみました。

//参考:http://chokuto.ifdef.jp/urawaza/message/WM_COMMAND.html //http://wisdom.sakura.ne.jp/system/winapi/windata1.html button gosub "ボタン",*dummy h_but=objinfo(stat,2) //ボタンのハンドル a=0 : listbox a,,"リスト\nボックス" h_lis=objinfo(stat,2) //リストボックスのハンドル b=0 : combox b,,"コンボ\nボックス" h_com=objinfo(stat,2) //コンボボックスのハンドル c="" : mesbox c,200,100,1 h_mes=objinfo(stat,2) //メッセージボックスのハンドル oncmd gosub *command,0x0111 //WM_COMMAND=0x0111 onclick gosub *w_click stop *command n_code=(wparam >> 16) & 0xFFFF //通知コード switch lparam case h_but if n_code=0 : title "ボタンが押されました" //BN_CLICKED=0 swbreak case h_lis if n_code=4 : title "リストボックスが押されました" //LBN_SETFOCUS=4 swbreak case h_com if n_code=3 : title "コンボボックスが押されました" //CBN_SETFOCUS=3 swbreak case h_mes if n_code=0x100 : title "メッセージボックスが押されました" //EN_SETFOCUS=0x100 swbreak swend return *w_click title "ウィンドウがクリックされました" return *dummy return



ぴよ

リンク

2020/3/6(Fri) 13:24:57|NO.89638

お礼が遅れてしまい申し訳ありませんでした。

おお!すばらしいです。
ありがとうございます。助かります!

Win32APIは、むずかしいですね。
どうして、標準機能だけで拡張コントロールを
自由に作れるような仕様にしないんでしょうね。
おにたまさん・・・

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



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.89489への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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