Windowsコントロール

一般的なアプリケーションではテキストボックスやボタンなどを使用しており、ユーザーの側としても特に問題なく使用していると思います。Windows95またはそれ以前から存在する標準コントロールとして、ボタン、テキストボックス、ラベル、リストボックス、コンボボックスなどが用意され、プログラマはそれを使って自分のアプリケーションを作成できるようになっています。

また、コモン(一般的な)コントロールとしてリストビュー、ツリービュー、ステータスバー、ツールバーといったより複雑なことができるコントロールも使用できるようになりました。これらも今では普通に利用されていますね。

しかし、稀にこれ以外のコントロールを見かけることもあるかと思います。例えばパソコンに最初からインストールされているソフトウェアなどは奇抜なインターフェイスを備えていたりします(それがいいかどうかはまた別の話ですが)。マルチメディア関係のソフトウェアはとりわけ独特のインターフェイスを持っていますが、一体どのようにして作っているのか、ちょっと見てみましょう。

オーナードロー(カスタムドロー)という方法があります。これは既存のコントロールの表示部分を自由に制御する方法で、動作はそのままに見た目だけを変えることができます。代表的なものとしては、ボタンがあります。イメージつきのボタンなんかは多くのソフトウェアで利用されていますし、また他にはアイコン付きのメニューなんかもオーナードローによって実現されている機能です。見た目を自在にできる反面、その全てを自分で処理しなくてはならないので、面倒なこともあります。当然のことですが、その既存のコントロールがオーナードロー(またはカスタムドロー)をサポートしていないと利用することができません。

他にはリージョンを操作する方法があります。リージョンとはウィンドウが所有する領域のことで、これを操作することでウィンドウが表示される大きさ、形状などを変えることができます。角の丸いウィンドウや、デスクトップアクセサリーなどの普通の形でないウィンドウは複雑なリージョンの形成で実現することができます。

もちろん上記の方法では作成できそうにないコントロールも多々あります。そういうのは、一から全部作られているものです。「子ウィンドウ」という、タイトルも枠も持たない最もシンプルなウィンドウを加工して用途に合ったコントロールに仕上げています。ちなみにDonutPのタブコントロールはタブをクリックしても段の順序が入れ替わらないとなかなか評判がいいですが、あれも1から作成された独自コントロールだからこその動作です。

蛇足ですが、ボタンやテキストボックスをプログラムで作成する際にCreateWindowという関数が実行されます。すなわちボタン等のコントロールもまた「ウィンドウ」なのです。

むー、今日の話は書いててわけわかめだったけど、読み返してみても・・・むー。