あまつぶ

7.22 【アピアランスとリスト】

 IconPartyの描画点ライブラリ編集ルーチンを作成中なのだが、アピアランス対応のダイアログ内にリストを作成した場合にちょっと問題が発生。
 リストの背景がダイアログの背景と同じになってしまうため、リスト内のアイテムを選択してもうまくハイライトされないのだ。どうも背景が白でないとだめらしい。
 Appearance 1.0以降で追加された「LIST BOX」CDEF(ID = 22)を使ってみたらいけかなと思ったのだが、これがなぜかうまくいかない。ダイアログの背景が指定されていると、リスト内のアイテムを描画する時に背景が変わってしまうらしい。
 自分でLDEFを書いて、LDEFの中でSetThemeWindowBackground()で背景を変更してやるしかないのかなと思ったが、ひょっとしたらリスト関係のルーチンを呼び出す前にこっそり変更してやればうまくいくかも……と思ってやってみると、みごとに成功。アップデート時もクリック時(選択/解除)時もスクロール時も変更しないといけないのは面倒だが、これで動いているようだからよしとしよう(笑)。

 もう一つ関連して。リストの周りに枠をつけるDrawThemeListBoxFrame()というルーチンがあるのだが、アピアランスのテーマによってうまくつく場合とつかない場合があるようだ。正確には、テーマによって枠が描かれる場所が変わってしまうということ。テーマ側の問題なのかも知れないが、注意。DrawThemeFocusRect()の方は問題がないようなので、不思議だ。うちではとりあえず、「プラチナ」できれいに表示されるようにあわせておいた。

 というわけで、やっとリストがきれいに表示されるようになっただけの段階なので、リリースはまだ。リストの順番入れ替えはできたので(おともだち帳エディタを参考にして(笑))あとは編集と追加と削除くらいかな。これらは単にダイアログを出してそれなりに処理するだけだからそれほどかからないか。ま、今月中に出せるようにがんばろう。

 上に書いたように、ひさしぶりにおともだち帳エディタのソースをいじったのだけど、いくつかバグを発見してしまった。そのうちひとつは、データが壊れてしまう結構致命的なもので、これは修正しておかないといけないかなと思う。おまけ程度でつけてあるバルーンヘルプがずれているのも気になるし(笑)。そんなわけで、IconPartyの1.10b2が出せたら手をつける予定。


July 20, 2000 ↑ July index → July 29, 2000