開発じたばた日誌

前へ●●●次へ
じたばた日誌目次へ戻る
TSUCHY Softへ戻る


FileSum ビットマップボタン編


 CButtonクラスのメンバー関数をみたらSetIconとかSetBitmapなんていうもってこいの関数があるじゃないですか!! これは楽勝。アイコンをつくって表示してみるか。

 でぇぇぇぇん。出ん。出ん。アイコンなんてどこにも出ないぞ。どこが間違っているんだ。 あああ、またここでもはまるのか。SetIconであきらめたからSetBitmapに乗り換えよう。

 でぇぇぇぇん。出ん。出ん。なんだよぉ。だめじゃないか。この関数は何のためにあるんだよ!! MFCのバグか、ソフトに抜けていることがあるのか。結局このときはあきらめました。 あとからわかったのですが、ボタンを作成するときのスタイルにBS_ICONとかBS_BITMAPをORしてやらないと だめなのです。それなのにヘルプにはこのスタイルが書かれていないのです。「クエリー」ってやつで検索すれば確かに でてきますけどね。

 これはVC++5.0でも改善されていません。メンバー関数だけ見せておいて、それを有効にするスタイルの 説明がないなんて許せないなぁ。

 どうしようもないので、オーナードローというイバラの道を歩むことにしました。 オーナードローとは自分で一生懸命しこしことボタンの全てをプログラマが表示してやるということです。 しかし、災い転じて福となる。ここで修得したオーナードローがこれから様々なところで役に立ちます。

 Windows95ではボタンとかメニューとかは、ユーザーが色を決定できます(グレイとかベージュとかね)。 これはちょっとやっかいなことです。なぜかというと、ドライブの絵をビットマップで描いて背景をグレイにしても、 ユーザーがボタンの色をベージュにしていたらとてもみっともないことになります (ベージュのボタンに背景がグレイの絵がついたドライブボタンができあがる)。

 したがって「透明」という概念が必要です。アイコンのいいところは「透明」が使えるところです。 でもここではアイコンをあえて使いません。ドライブにはフロッピー、HDD、CD-ROMなどいろいろあり、いちいちそれに 対応したアイコンを使うのはなんとなくスマートじゃない感じがします。

 さあ、Windows95の新しいコモンコントロールのCImageList君、君の出番だ!オレに楽チンをさせてくれ。