OriosのActiveBasic講座(2-1): ウィンドウパーツ
2.スタティック(ラベル)ウィンドウ

c.解説

前ページのプログラムの解説です。 前ページでも書きましたが、背景が黄色の部分だけが新しいところなので、もし他の部分で分からないことがありましたら、スケルトンウィンドウの項目を読み直してみてください。

[1] 変数の宣言

Dim hLabelWnd As HWND
【ここでやること】
スタティックウィンドウを作るために必要な変数を宣言します。
【詳しい説明】
( ) 変数の宣言
スタティックウィンドウも、スケルトンウィンドウと同じように「ウィンドウハンドル」を使って制御するので、ウィンドウハンドルを記録する変数(HWND型)が一つ必要になります。

[2] スタティックウィンドウの作成

hLabelWnd = _ CreateWindowEx( NULL, "STATIC", "クリックすると文字が変わります。", WS_CHILD or WS_VISIBLE, 10, 80, 290, 20, hMainWnd, NULL, GetModuleHandle(0), NULL )
【ここでやること】
スタティックウィンドウを作成します。
【詳しい説明】
(1) 子ウィンドウ
皆さんは「ウィンドウ」というと、「タイトルバー」があって「閉じるボタン」とかが右についているものを想像するかもしれませんが、実は今回扱う「文字(ラベル)」を始め「ボタン」や「テキストボックス(エディットボックス)」なども全てウィンドウです。 なので、スタティックウィンドウ(文字)を作るにも「CreateWindowEx関数」を使います。 ただこういうパーツは子ウィンドウと言って、普通のウィンドウとは区別されます。
(2) CreateWindowEx関数
前にも書いていますが、スタティックウィンドウを作るには「CreateWindowEx関数」を使用します。 スタティックウィンドウを作るからと言って、パラメータの大半は普通のウィンドウと同じですので、同じ部分は省略して説明します。
(a) 拡張スタイル
省略
(b) 使用するウィンドウクラス
普通のウィンドウを作るときは、自分で設定したウィンドウクラスを使いましたが、スタティックウィンドウ(文字)やボタンなどを作るときは、あらかじめ用意されている専用のクラスを指定します。 スタティックウィンドウを作るときは「STATIC」というクラスを使います。
(c) ウィンドウタイトル
スタティックウィンドウの場合は、表示したい文字列を指定します。
(d) ウィンドウスタイル
ウィンドウスタイル(ウィンドウの外観)を指定します。 まず重要なのは、スタティックウィンドウを始めとする「子ウィンドウ」を作るときは必ず「WS_CHILD」を指定することです。 これを指定しないとうまく作れません。 あと「WS_VISIBLE」も忘れずに指定します。
また、スタティックウィンドウの場合は次のウィンドウスタイルも使えます。
SS_LEFT文字列を左揃えにします。
SS_CENTER文字列を中央揃えにします。
SS_RIGHT文字列を右揃えにします。
  • ※ ここで書いたものは最低限のものです。
(e) ウィンドウの左上のx座標(横方向の位置)
(f) ウィンドウの左上のy座標(縦方向の位置)
(g) ウィンドウの幅
(h) ウィンドウの高さ
子ウィンドウの場合は、(e)(f)は親ウィンドウ(この場合文字を貼り付けられるウィンドウ)のタイトルバーと枠を除いた部分の左上を(x座標,y座標)=(0,0)と基準とした座標系で指定します。 あとは同じです。
(i) 親ウィンドウ
子ウィンドウを貼り付けるウィンドウのウィンドウハンドルを指定します。 今回の場合、メインウィンドウにスタティックウィンドウ(文字)を貼り付けるので「hMainWnd」を指定します。
(j) メニューハンドル
(k) インスタンスハンドル
(l) CREATESTRUCT構造体へのポインタ
省略

[3] 表示されている文字の変更

Case WM_LBUTTONUP SendMessage(hLabelWnd, WM_SETTEXT, 0, "クリックしましたね。")
【ここでやること】
ウィンドウがクリックされたときに子ウィンドウの文字を変えます。
【詳しい説明】
(1) WM_LBUTTONUPメッセージ
コールバック関数のところで、ウィンドウに送られてくるメッセージの処理方法を学習しましたが、「WM_LBUTTONUP」もそういうメッセージの一つで、ウィンドウが左クリックされたことを通知します。
ちなみに「WM_RBUTTONUP」は「右クリック」、「WM_MBUTTONUP」は「中央ボタンクリック」されたときにそれぞれ通知されます。
(2) SendMessage関数
自分で作ったウィンドウを操作する場合には、「SendMessage関数」を使用します。 これは、指定したウィンドウのコールバック関数にメッセージを送る関数です。 なぜ、コールバック関数にメッセージを送るとウィンドウを操作ができるかというと、スタティックウィンドウ(文字)やボタンにはあらかじめ専用のコールバック関数が用意されていているので、あらかじめ決められているメッセージを送ることで、このコールバック関数がそのメッセージに応じて文字を変えるなどの処理してくれるからです。
(a) メッセージを送るウィンドウのハンドル
操作したいウィンドウのウィンドウハンドルを指定します。
(b) 送るメッセージ
(c) 付加情報1
(d) 付加情報2
送りたいメッセージを指定します。 今回は文字を変えるので「WM_SETTEXTメッセージ」を送ります。 このとき「付加情報2」に変えた後の文字列を指定してやります。 「付加情報1」は「0」で構いません。
  • ※ もし興味のある方は「メインウィンドウ」がクリックされたときに「SendMessage関数」で「WM_CLOSE」(付加情報は共に「0」)をメインウィンドウ自身に送ってみましょう。 メッセージを送るということが実感できると思います。

前ページ - 次ページ

ご質問・ご意見・ご感想・苦情等はメールまたはメイン掲示板のActiveBasic板などでお気軽にどうぞ。

ホーム > OriosのActiveBasic講座(トップページ) >