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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0719
匿名希望comboxの表示と変数の内容が一致しない2解決


匿名希望

リンク

2013/7/19(Fri) 00:45:39|NO.55744


sdim buf, 512 repeat 100 buf += str(cnt)+"\n" loop combox cb, , buf
(まぁソースは何でも良いのですが)

1.コンボボックスをクリック(プルダウンリストを開く)
2.そのままマウスを動かさずに↑/↓キーでプルダウンリストの項目を選択
3.再びコンボボックスをクリックしてプルダウンリストを閉じる
上記1.〜3.の手順を踏むと、
「コンボボックスの表示は変更されるのに、それが変数には反映されない」
という状態になります。

・1.の後マウスで選択する
・2.の後Enterキーで決定する
・3.の後↑/↓キーで選択する
等の操作ではきちんと変数に反映されます。

何か解決策などありますでしょうか?

環境:
HSP3.32b
Windows 7 Ultimate Service Pack 1 (x64)



この記事に返信する


inovia

リンク

2013/7/19(Fri) 01:44:36|NO.55746

HSPのコンボボックスの変更取得は、CBN_SELENDOKの通知コードで判断しています。
http://dev.onionsoft.net/trac/browser/trunk/hsp3/win32gui/hspwnd_obj.cpp#L202
確実に値の変更を取得するには、CBN_SELCHANGEの通知コードを拾うと良さそうです。
以下のようにすると確実に取得できるようになるかと。


#define WM_COMMAND 0x0111 #define CB_GETCURSEL 0x0147 #define CBN_SELCHANGE 1 oncmd gosub *on_wm_command, WM_COMMAND sdim buf, 512 repeat 100 buf += str(cnt)+"\n" loop combox cb, , buf hCombox = objinfo(stat, 2) stop *on_wm_command // 作ったコンボボックスの場合 if lparam == hCombox{ // コンボボックスのインデックスの値が変更された場合 if (wparam>>16) == CBN_SELCHANGE{ // コンボボックスのインデックスの値を取得する sendmsg hCombox, CB_GETCURSEL, 0, 0 // stat に コンボボックスのインデックス値が入るので代入 cb = stat } } return



匿名希望

リンク

2013/7/19(Fri) 10:06:08|NO.55747

今組んでるスクリプトでは
CBN_SELCHANGEメッセージを拾うのが難しかったのですが(動作は確認できました)
CB_GETCURSELメッセージで選択項目を取得できました

inoviaさんどうもありがとうございました



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