none
UNICODE下でのCListCtrlについて RRS feed

  • 質問

  • のぬと申します。

     

    現在VC2005(SP1)にてファイルブラウザのようなものを作成しており、

    CListCtrlにImageListを設定して画像ファイルのサムネイルを

    CListCtrlに表示しています。

     

    CListCtrlの表示スタイルをLV_VIEW_TILEにしたときに、

    CListCtrlに表示された画像をクリックすると、画像が消えてしまい、

    他のコントロールにフォーカスが移動すると画像が表示されます。

     

    また、プロジェクトの設定で、マルチバイト文字セットを使用して

    コンパイルすると、このような現象は発生しません。

     

    ユニコードビルド時に、表示された画像の場所をクリックしても

    消去されないようにしたいのですが、何か情報をお持ちの方は

    いらっしゃらないでしょうか。

     

    以上よろしくお願いします。

    2007年5月11日 6:25

回答

  • 動作確認している OS は何でしょうか?

    また、他の OS で試すことは可能ですか?

     

    コモンコントロールDLL関連かもしれませんね。

     

    もし Visual Studio 2005 で新規にプロジェクトを作成したのであれば、stdafx.h に以下の記述があると思います。

     

    #ifdef _UNICODE

    #if defined _M_IX86

    #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")

    #elif defined _M_IA64

        ......

    #elif defined _M_X64

        ......

    #else

        ......

    #endif

    #endif

     

    このブロックを全てコメントアウトしたらどうなるでしょうか?(つまりビジュアルスタイルを無効にする)

     

    また、現象が再現するミニマムコード(CListCtrl に ImageList を設定している周辺など)を提示できれば、何かわかるかもしれません。


     

    2007年5月11日 12:03

すべての返信

  • 動作確認している OS は何でしょうか?

    また、他の OS で試すことは可能ですか?

     

    コモンコントロールDLL関連かもしれませんね。

     

    もし Visual Studio 2005 で新規にプロジェクトを作成したのであれば、stdafx.h に以下の記述があると思います。

     

    #ifdef _UNICODE

    #if defined _M_IX86

    #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")

    #elif defined _M_IA64

        ......

    #elif defined _M_X64

        ......

    #else

        ......

    #endif

    #endif

     

    このブロックを全てコメントアウトしたらどうなるでしょうか?(つまりビジュアルスタイルを無効にする)

     

    また、現象が再現するミニマムコード(CListCtrl に ImageList を設定している周辺など)を提示できれば、何かわかるかもしれません。


     

    2007年5月11日 12:03
  • のぬです。

    ご回答ありがとうございます。

     

    使用OSが欠落していましたね・・・

    使用OSはWindowsXPで、あいにく他のOSで試すことはできません。

     

    しかしながら、ご回答いただいた

     

    >このブロックを全てコメントアウトしたらどうなるでしょうか?(つまりビジュアルスタイルを無効にする)

     

    を実行し、リビルドを実行したところ、悩んでいた現象は完全に収まりました。

     

    ビジュアルスタイルの有効無効についての知識が無く、まったく理由が分からない状態ではありますが、

    これから調べてみようかと思います。

     

    ありがとうございました。

    2007年5月14日 1:23
  • ビジュアルスタイルを有効にした状態でも、本現象が出なくなったので追記しておきます。

     

    根本原因はイメージリスト作成の際にflagsにILC_COLOR32を指定していたために起こっていたようで、

    ILC_COLOR24に設定したところ、ビジュアルスタイルが有効な状態でも

    サムネイルを選択しても、画像が消える現象は発生しなくなりました。

     

    2007年5月14日 3:39