ACT-1今回はマウスカーソルの変更をしてみます。時間のかかる計算などのために一時的にカーソルをビジー表示(デフォルトでは砂時計カーソル)にする場合の手順について説明することにします。一時的にカーソルをビジー状態に変更するための手順は以下のようになります。関数でシステム定義のカーソルの中から砂時計カーソルをロードする。関数でマウスカーソルを変更する。今回はあくまで一時的にマウスカーソルの表示を変更するだけです。アプリケーションの新しいマウスカーソルを設定するということはできません。実行することができないためです。実行したい場合の方法は、次回に説明します。マウスカーソルのロードマウスカーソルは、アイコンの場合と同じく、Windowsユーザーオブジェクトの1つである『カーソルオブジェクト』として扱われることになります。したがって、マウスカーソルを操作するためには、カーソルオブジェクトを作成して、そのハンドルを取得しなければならないことになります。今回使用するマウスカーソルは、システム定義のカーソルです。パラメータには決められた値を指定することでシステム定義カーソルをロードできます。関数は戻り値としてロードされたマウスカーソルのハンドルを返します。関数によって作成されたカーソルオブジェクトは、前回作成されたアイコンオブジェクトなどとは少し性質が異なります。cursor)』と呼ばれるもので、以前に作成したのと同じカーソルリソースからカーソルオブジェクトを作成しようとしたときに、新しくオブジェクトを作成するのではなく、以前に作成されたオブジェクトを共有するようにしているのです。関数からは以前のカーソルと同じハンドルが返されます。このような動作を行なうことにより、新しいオブジェクトのための余分なメモリ領域と、作成のためのオーバーヘッドを少なくしているのです。共有カーソルは、1つのプロセスだけでなく、すべてのプロセスで共有されるようになっています。そのため、オブジェクトが必要なくなったとしても、明示的にオブジェクトを削除する必要がなくなるのです。関数で取得されたカーソルは破棄する必要がありません。マウスカーソルの変更マウスカーソルのハンドルを取得できたら、次に、マウスカーソルを変更します。パラメータには、先ほど取得したカーソルのハンドルを指定します。マウスカーソルを元に戻すにはマウスカーソルを元に戻すには、先ほどの手順において、標準矢印カーソルをロードして指定することで行なうことができます。関数で指定すれば元に戻ります。いずれかの命令を実行することでマウスカーソルが元に戻ってしまいます。実行することによって、ウィンドウメッセージを処理する機会が与えられることによります。メッセージを送ることになっています。このメッセージが送られると、メッセージを処理するデフォルトウィンドウプロシージャは、ウィンドウ作成時にHSP内部で登録されたウィンドウクラスで指定されているマウスカーソルに自動的に変更してしまうのです。メッセージが処理され、マウスカーソルが元に戻ってしまうことを意味します。メッセージを処理させないようにする方法と、ウィンドウクラスに設定されているマウスカーソルそのものを変更してしまう方法とが考えられます。前者はスクリプト上で行なうことはできませんが、後者(ウィンドウクラスのカーソル変更)は実現できます。これは次回に説明します。サンプルスクリプトさて、実際にスクリプトを書いてみます。