HOME >> HSPサンプル置き場 兼 実験室 >> オブジェクトの値が変更されたことを検出してみる
オブジェクトの値が変更されたことを検出してみる | ||||
inputなどのオブジェクトの値が変更されたことを検出するには、ループ内で変数の内容を監視するなどの方法がありますが、今回はループを使わずに、ウインドウに送られてくるメッセージで変更が行われたことを検出してみようと思います。 inputなどのオブジェクトに何らかのイベント(スクロールバーがクリックされた、値が変更された等)が発生すると、 WM_COMMANDメッセージがオブジェクトの設置されているウインドウに送られてきます。 そしてこのWM_COMMANDメッセージを処理してやることで、どのオブジェクトに何が起きたかを知る事ができます。 とりあえずソースコードです
oncmd命令でメッセージを処理するラベルの設定と、オブジェクトのハンドルをobjinfo命令で取得しておきます。 WM_COMMANDメッセージの処理は、ラベル"*onWM_COMMAND"内で行っています。 WM_COMMANDのlParamにオブジェクトのハンドル、 wParamの上位ワードにコントロールからの通知コード、つまり何が起きたかが書かれています。 これらのことを利用して、 lParamと、取得しておいたオブジェクトハンドルを比較し、一致したらwParamの上位ワードを調べます。 今回はオブジェクトの値が変更されたことを検出したいので、wParamにEN_CHANGEが入っているかどうか調べます。 EN_CHANGEが入っていれば値が変更されたということになります。 今回はinputのみを扱いましたが、mesboxでも同じような感じで内容の変化を検出することができます。 参照 HSPの裏技 通知メッセージリスト: http://yokohama.cool.ne.jp/chokuto/urawaza/notify/ WinAPI Database for VB Programmer ウインドウメッセージ一覧表示: http://www.winapi-database.com/Message/WM/ |
||||
更新日:2008/9/12 |