次へウィンドウの何たるか今回はウィンドウについてのお話です。ウィンドウとは何か?さて、ウィンドウとはいったい何なのでしょうか?まあ、誰でも知っていると思いますが、英語でいうところのウィンドウとは「窓」ですよね。コンピュータ上でウィンドウと言えば、アプリケーションによってディスプレイ上に表示されている長方形の領域のこと。アプリケーションの「窓」というわけです。実際にはこれだけをウィンドウと呼ぶわけではありません。Windowsにおいては、ツールバーやステータスバー、押しボタン、ラジオボタン、チェックボックス、エディットボックス、リストボックス、ツールチップまでもが、実は1つのウィンドウということになっているのです。最初はとっつきにくいと思いますが、そういうものなんだと割り切ってください。Windowsによるウィンドウの管理アプリケーションによってウィンドウが作成されると、Windowsはウィンドウハンドルと呼ばれる、ウィンドウを識別するための値を作成されたウィンドウに割り当て、以下のようなすべてのウィンドウを管理するためのテーブル(表)にそのウィンドウの情報を追加します。ハンドルはウィンドウごとに異なった値となっています。ウィンドウに関する情報が必要になったとき、Windowsはウィンドウハンドルを元にそのテーブルを参照することで目的となるウィンドウに関する情報を引き出します。このような表が作られると考えてください。...アプリケーションがウィンドウに何らかの処理をしたい場合、対象となるウィンドウのハンドルを指定してAPI関数を呼び出せば、目的の処理が実現されるのです。HSPで作成されるウィンドウもそれぞれウィンドウハンドルを持ちます。HSPの命令で作られたエディットボックスやコンボボックスなどもそれぞれのウィンドウハンドルを持っています。これらのハンドルはHSPが内部で処理をしているために普通は私たちの目に触れることはありません。したがって、HSPでのプログラミングはこういったウィンドウハンドルを意識することなく行うことができます。ウィンドウメッセージとは?前にも説明した通り、Windowsの主な特徴はGUIとマルチタスクです。これらは、ウィンドウメッセージ(イベントメッセージ、または単にメッセージと呼ばれることも多い)によって実現されています。メッセージというのは、Windowsからアプリケーションのウィンドウに送られる言わば「お知らせ」のようなものです。ユーザーがマウスやキーボードによって入力したとき、あるいは、ボタンやメニューを押したとき、これらはまずWindowsによって取得されます。その後、Windowsはこれをそれぞれメッセージとしてアプリケーションに知らせるのです。アプリケーションは、このメッセージによってユーザーがどのような入力を行ったのかを知ることができるのです。複数のアプリケーションが起動しているとき、Windowsはそれぞれのアプリケーションに順番にメッセージを送っていきます。これらは、非常に短い間隔で実行されているために、私たちから見ると、複数のアプリケーションにおけるメッセージ処理が、あたかも同時に行なわれているかのように見えるのです。メッセージ駆動方式Windowsのアプリケーションは一般にメッセージ駆動方式と呼ばれています。この方式では、アプリケーションの処理の流れはメッセージによって決定されます。いうことかというと、Windowsからメッセージを受け取る手段として、アプリケーションは専用の関数(プログラムコード)を持っていて、Windowsはメッセージを送るときにこの関数を呼び出す、という手段をとります。ウィンドウプロシージャには送られてくるメッセージに応じた処理をするコードが記述されていて、Windowsからメッセージが送られるたびにこのコードが実行されるようになっているのです。HSPではどうでしょう?HSPを使っていて、こういったメッセージを処理するスクリプトなどを書いたことはないでしょう。HSPでは、こう言ったメッセージ処理は内部ですべて処理しているために、私たちはこれを意識することなくスクリプトを書くことができるのです。ver3.0からは、このメッセージを処理するカスタムイベントがサポートされる予定です。現在の最新版(ver2.6)では、キーやマウスがクリックされたときに割り込み実行を行う命令が実装されています。これもまた、そういった機能の1つと考えることができます。