■コマンドボタンのグラフィック化

Visual Basic 5.0 から、コマンドボタン表面にグラフィックスを使えるようになった。それまでテキスト文字しか表示できなかったことを思えば、格段の進化といっていいだろう。見栄えの点でも表現力の点でも、テキスト文字とグラフィックスでは受ける印象が全然違ってくる。これは、実際に変更のプロセスを体験してみるまでもないことだ。

グラフィックスを表示するには、Styleプロパティを「1-グラフィックス」にする必要がある。これで、コマンドボタンのPictureプロパティが有効となり、任意のグラフィックファイルをロードすることができる。しかし、この方法ではコマンドボタンの数だけグラフィックファイルを用意しなければならない。これは面倒なので、コマンドボタン用のグラフィックスをまとめて1つのファイルにしたい。

要するに、グラフィックスの一部を特定のコマンドボタンに使いたいということなのだ。ところが、グラフィックスの部分転送に欠かせないBitBlt関数は、オブジェクトの指定をhDCプロパティ(オブジェクトのデバイスコンテキストに設定されているハンドル)で行うため、コマンドボタンのPictureには直接転送できない。つまり、画像イメージとして貼り付けるしかないということだ。

そこで、このようなときには中継用のPictureBoxを用意し、ワンクッション置いてから貼り付ける。例えば、SubPicという中継用のPictureBox(サイズはコマンドボタンに合わせる)を用意したとするなら、まとめてあるほうのPictureBoxからそこに部分画像をBitBlt関数を使って転送しておく。これで、任意の画像イメージをコマンドボタンに貼り付けることができる。


コマンドボタン.Picture=Subpic.Image
コマンドボタン.DisabledPicture=Subpic.Image
コマンドボタン.DownPicture=Subpic.Image

上記の内容は、コマンドボタンの状態(通常/無効/押下)すべてに同じ画像を使用することを意味する。もちろん、個々に違ったものとしたいときには、まとめたグラフィックスからSubPicを経由して部分転送をすればよい。