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

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



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