ウィンドウハンドルの取得 『HSP3』
前回は「sendmsg」の基本的な使い方についてみていきました。今回はウィンドウハンドルの取得方法をみていきます。
「sendmsg」では第1パラメータにメッセージを送りたいウィンドウハンドルを指定しました。

「sendmessageとは」でも説明しましたが、「sendmessage」で使うウィンドウとは、フォームだけでなくコマンドボタンなどもいいます。
VBやVCなどで使用する言葉とHSP3で使用する言葉を混ぜてしまうとややこしくなるので(自分も整理できてない)、とりあえずHSPで作った画面をウィンドウ、その中のメッセージボックスやボタンをオブジェクトと呼ぶことで進めます。
ウィンドウハンドルは、ウィンドウそのものだけでなくボタンなどのオブジェクト1つ1つにつけられていますので、ボタンなどにもメッセージを送って制御することができます。では、それらのウィンドウハンドルの取得方法をみてみます。
ウィンドウのウィンドウハンドルの取得方法は前回でも説明しました。ただ、システム変数「hwnd」で取得できます。
例) mes hwnd 結果)495478
何度も起動してもらったらわかりますが、ウィンドウハンドル値は毎回変わります。
オブジェクトのウィンドウハンドルの取得も簡単です。システム変数で勝手に取得とまではいきませんが、「objinfo_hwnd」関数を使います。
関数名をみただけでもイメージつきますね。オブジェクト情報の「hwnd」です。
例)
a = "1つ目のオブジェクト"
input a,150,20
mes objinfo_hwnd(stat)
b = "2つ目のオブジェクト"
input b,150,20
mes objinfo_hwnd(stat)
この例では「input」というメッセージボックスのオブジェクトを生成してます。システム変数「stat」には、直前に生成したオブジェクトのオブジェクトIDが格納されます。しかし、このオブジェクトIDは、HSP3の範囲内だけで使えるもので、これをwindowsAPIで使うことができません。sendmsgのパラメータは、ウィンドウハンドルを指定するので、この「stat」をウィンドウハンドルに変換します。この変換で利用するのが「objinfo_hwnd」関数です。オブジェクトIDを渡すとウィンドウハンドルを返します。
これで、ウィンドウやオブジェクトからウィンドウハンドルを取得することができました。
2009 年 5 月 25 日 月曜日 【 カテゴリー: HSP3 , sendmsg 】

