どうも、Pre-RTM (Build 5840) 以降とそれ以前で、グラフィック関係のアルゴリズムに変更があったみたい。32×32 ピクセルのアイコンを、16×16 に縮小して表示しているのですが、Build 5840 以前では何とも思わなかったのに、RTM (Build 6000) では潰れてしまいます。
こんな変更、RTM で入れないで欲しい。
ちなみに、Build 5840 はパートナー企業に配られたビルドで、ベータ テスタは手に入れられません。
?
?
?
と、書いたけど。コードの潜在バグみたい。
イメージリストの作成で、CImageList.Create(16, 14, TRUE, 1, 1) って (^-^;
型付けされているけど、型の種類が少ない、より上位の型で宣言されていることが害なのか。。。
引数の意味、理解してる?特に第3引数。ここ、色の扱いに関するフラグなんだけど、 TRUE ってなによ?真偽値の「真」は、「偽以外」であって、実装依存なんですよ?!昔の BASIC では、-1 でした。律儀に全ビットを「偽以外」にすると、-1 になると。.NET Framework では、1 になると思います。MFC では、#define TRUE 1 と、定義されていました。
第2引数の 14 は、ListView に表示するので、グリッドやなんかで消える分を意識しているんだろうな。
第5引数はイメージリストに入れるイメージの最大値なんだけど。。。えっと。この後、Add が4つ続いているのですが。。。頭痛い。。。ん~?でも、MSDN もわかりにくい。初期値以上に追加しようとしたとき、領域が確保される数、増分値のこと?nGrow だから、増分値っぽいな。
?
?
MFC で開発されている皆さん。Vista でおかしな現象が出たら、まず、潜在バグを疑いましょう。とっても、行儀に厳しくなっています。MSDN をよく確認して、変な値を渡していないか、イベントや継承関係の実行順を間違って理解していないか、確認しましょうorz
でも、やっぱり拡大縮小のアルゴリズムにも、問題があると思う。
このように、右端に存在しない線が表示される。中央だけ若干大きいのは、スクリーンショットをとった画面が、150 DPI だったから。通常は、96 DPI なので、若干大きくなる。
投稿日時 : 2006年11月21日 23:39