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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0610
inecomboxを、ユーザーが選択を変更したときに検知したい6解決


ine

リンク

2020/6/10(Wed) 14:33:17|NO.90730

comboxをユーザーが選択を変更したときに分岐させる方法はありますか?

comboxの選択が変更されたときにmesで文字を表示するようにしたいです。
自分で考えたのは、combox配置後にその内容保持変数をrepeat-loop内で監視して変更されたときに
分岐する方法ですが、これより簡潔な方法ってあったりしますか?



この記事に返信する


TOMATO

リンク

2020/6/10(Wed) 20:48:20|NO.90733

コンボボックスなどのコントロールはウィンドウに対してメッセージが飛んでくるので
それを拾えばループで監視する必要はないですね。
https://ameblo.jp/sgl00044/entry-12507938134.html


#define WM_COMMAND 0x0111 #define CBN_SELCHANGE 1 #define ctype LOWORD(%1) ((%1) & 0xFFFF) #define ctype HIWORD(%1) ((%1) >> 16 & 0xFFFF) oncmd gosub *WM_CMD, WM_COMMAND txtarray = "APPLE", "ORANGE", "GRAPE" txtbuf = "" notesel txtbuf repeat length(txtarray) noteadd txtarray(cnt) loop a = 0 : objsize 120, 24 combox a, 120, txtbuf hCombo = objinfo(stat, 2) stop *WM_CMD if lparam == hCombo && HIWORD(wparam) == CBN_SELCHANGE { mes "変更されました ⇒ " + txtarray.a } return



ine

リンク

2020/6/10(Wed) 21:26:25|NO.90735

TOMAHO様、ありがとうございます。

サンプルソースコードとても参考になりました。
提示いただいたページで理解も深まりました。

解決とさせていただきます。



ine

リンク

2020/6/11(Thu) 00:34:59|NO.90738

すみません、追加で質問させていただきます。

いただいた上記サンプルで使用されている定数CBN_SELCHANGEの値は1ですが、
ネットで定数名CBN_SELCHANGEで検索しても「値は1である」という情報が見当たりませんでした(もしかしたら見落としているかもしれないです)。

例えば、コンボボックスの他の通知コードである「CBN_CLOSEUP」をhspで活用したい場合、CBN_CLOSEUPのその値を知らなければプログラムに使用する術が無いと思うのですが、
この場合、値を調べられる方法や一覧が掲載されているウェブサイトがあったりするのでしょうか?
(ちなみに、定数名で検索するとマイクロソフト公式のドキュメントのページが最上位にヒットしますが、このサイトでは確認可能でしょうか?値らしきものが見当たらなかったのです・・・)

ウィンドウメッセージというものを今回ほど初めて知ったばかりで分からないことが多いのですが、
上記の点についてご教授いただけると大変うれしいです;;



TOMATO

リンク

2020/6/11(Thu) 00:55:35|NO.90740

Microsoftのドキュメントには定数値が書いていないことが多いので、
自分がよくやるのは、Visual Studio をインストールして
(同時にWindows SDKもインストールされる)
Windows SDK 内のC++ファイル(*.h)をサクラエディタなどでgrep検索してますね。

◆ Visual Studio(無償)
https://visualstudio.microsoft.com/ja/vs/community/

◆ サクラエディタ
https://sakura-editor.github.io/

今回、自分の環境では、
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\um\WinUser.h
の場所に


#define CBN_SELCHANGE 1

という定義があったのでそのまま持ってきました。



TOMATO

リンク

2020/6/11(Thu) 01:35:32|NO.90741

Visual Studio Community の補足ですが、
フルインストールするとディスクの空き容量が大量に必要になります。
(100GBぐらいあるのでは…)

「C++ によるデスクトップ開発」だけを選択すれば、
Windows SDK (Windows 10 SDK)が含まれていますので、7GB 程度で済みます。
(個別のコンポーネントから選択すれば、もっと小さく済むかもしれませんが、未確認)



ine

リンク

2020/6/11(Thu) 04:39:32|NO.90742

TOMATO様

引き続いてご回答していただき大変感謝いたします。

早速vscommunityを入れてみて、umディレクトリで使用したい通知コードの文字列で検索したら目当ての値が出てきました。

これで開発がはかどりそうです。この度はどうもありがとうございます<(_ _)>



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