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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
1018
wlobjprmによるlistboxの内容変更時の「状態を保持する変数」の更新遅れ?2解決


wl

リンク

2020/10/18(Sun) 19:19:45|NO.91648

リストボックスの選択項目の変更(項目のクリック等)のウインドウメッセージを検知して、
選択された項目のインデックスを取得したかったのですが、
objprmによる内容変更後、初めてリストボックスを選択すると、
インデックスが「-1」となってしまいます。

下のスクリプトを実行してログを確認すると再現すると思います。


oncmd gosub *command,$111 list="a" listbox a,,list id=stat button gosub "new",*new stop *new //新しい項目を作成 list+="\n"+c:c++ objprm id,list //objpramで内容を変更 return *check //インデックスを調べる logmes a return *command if ( (wparam>>16&$FFFF) == 1) { //リストボックスが選択された gosub *check } return

やり方がおかしいのでしょうか。
この場合にしっかりと変更を確認する方法は何かありますか。



この記事に返信する


沢渡

リンク

2020/10/18(Sun) 19:54:01|NO.91649

どうも、listboxに割り当てられた変数に実情が反映されるタイミングは
WM_COMMANDの割り込み処理が終わった後のようで、
それで「クリックする前のカーソル位置」がlogmesで出力されてしまっているようです。
sendmsgでLB_GETCURSELを送ってみたらどうなるでしょう。

oncmd gosub *command,$111 //WM_COMMAND list="a" listbox a,,list id=stat h=objinfo(id,2) //オブジェクトのハンドル button gosub "new",*new stop *new //新しい項目を作成 list+="\n"+c:c++ objprm id,list //objpramで内容を変更 return *check //インデックスを調べる sendmsg h,0x188,0,0 //LB_GETCURSEL logmes stat return *command if (lparam == h)&( (wparam>>16&$FFFF) == 1) { //リストボックスが選択された gosub *check } return



wl

リンク

2020/10/18(Sun) 21:54:46|NO.91650

お早い回答ありがとうございます。返信が遅くなってしまいすみません。
そういうことだったんですね!本当に、知らないことだらけです。
提案していただいた方法でインデックスが取得できました!
助かりました。ありがとうございました。



記事削除

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

NO.91648への返信

マスコット

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

名前

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

削除用パスワード

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

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

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