VistaでListviewコントロールで問題が発生しています。特に、ヘッダーにカスタムアイコンを設定しています。私は(C++で)アイコンを追加した場合、通常XPまたはWindowsの以前のバージョンのいずれかの下で、私は次のようにそれを行うことができます:その後、VistaでListviewヘッダーイメージを消去する
HeaderItem.mask = HDI_FORMAT | HDI_IMAGE;
Header_GetItem(HeaderHWND, Column, &HeaderItem);
TurnOn(HeaderItem.fmt, HDF_IMAGE);
HeaderItem.iImage = Image;
if (Header_SetItem(HeaderHWND, Column, &HeaderItem) == 0)
printf("Failed to set header [%d:%.8X]\n", GetLastError(), GetLastError());
および特定の列に、画像を削除するには、I同じプロセスを使用できますが、HDF_IMAGEビットをオンにする代わりに、単にオフにしてください。
しかし、私がそれをオフにすると、実際には変更を受け入れていないようです。ですから、例えば、私は私のFMTを起動したときです:
0x4000の(または基本的にHDF_STRING)
私はアイコンをオンにし、それは次のようになります。
0x5800(または基本的にはHDF_STRING | HDF_IMAGE | HDF_BITMAP_ON_RIGHT)
私は再びそれをオフにし、その結果は次のとおりです。
0x4800(または基本的にHDF_STRING | HDF_IMAGE)
私はチェックして、それをHDF_STRINGだけに設定しましたが、一度HDF_IMAGEが設定されると、削除することは不可能に思えます。 Header_SetImageはエラーを返さないので、私は何をすべきかまで迷っています。私はまた、コントロールからImagelistを削除しようとしましたが、そこにまだ画像があるかのようにスペースを残しています。
最後にアイコンを追加したり削除したりする必要があります。アイコンが削除されると、すべてのヘッダースペースが再度利用可能になります(表示される前の状態です)。大歓迎! - 事前のおかげで
をはい、私は彼らのオンラインドキュメントにいることを確認 - VS2005にドキュメント(彼らは言及していないことを反映するものではありませんI_IMAGENONE)。私の不満は、あなたがiImageを設定しているかどうかにかかわらず、それが以前に働いていたこと、そしてそれが黙って失敗したことです。少なくとも今は2つの選択肢があります - ありがとう! :) – Mark