none
Windows SDK for Vista と comctl32.lib RRS feed

  • 質問

  • ReBarコントロールを使ったアプリケーションを作ろうと情報を集めています。
    次のようなサンプルを見つけて参考にしているのですが、妙な現象に遭いました。

    まずサンプルについてです。
    MSDN Online Web & Internet Samples - Rebar Control
    http://msdn.microsoft.com/archive/en-us/samples/internet/commctrl/rebar/default.asp
    このサンプルを次の環境でビルドしてみました。
    (1) Vista Home Premium + VisualStudio2005 Standard(SP1 + Vista Update) + Windows SDK for Vista(2007/06版)
    (2) XP Pro + VisualStudio2005 Standard(SP1)
    (3) XP Home + VisualStudio6.0 Enterprise(SP6)

    (1)の場合、作成されるReBarの高さ(垂直表示時の幅)がゼロになり実質見えない状態になります。MoveWindowなどのリサイズも効きません。
    (2)(3)の場合は正しくReBarが表示されます。
    それぞれ何が違うか比べてみたところ、Windows SDKの有無ではないかと思いました。
    (1)の環境はVCパス設定でWindows SDKのincludeとlibを優先するように設定していました。
    これを従来のVisualStudio2005と同時にインストールされるSDKのパスに戻したらReBarが表示されるようになりました。

    原因はWindows SDK for Vistaだと解ったのですが、これはSDKのcomctl32.libないしcommctrl.hがおかしいのかバージョンが上がったことによっていわゆる作法が変わったのかどちらなのでしょうか?
    また詳しい原因がわかった場合、どのような対処をすればいいのでしょうか。
    個人では判断が難しいように思えたので投稿することにしました。

    以上、皆様のお力をお借りできればと思います。

    2007年7月4日 14:59

回答

  • 有力なヒント、ありがとうございます。

    いろいろ疑っている過程で、投稿もとの(1)マシンに入っているVisualStudioを修復セットアップすることになってしまいました。

    確認した後、再度報告の書き込みをしたいと思います。

     

    とりあえず連絡だけですがありがとうございます。

     

    (追記)

    確認をしてみたところ、無事表示されるようになりました。

    2007年7月5日 11:36

すべての返信

  • リンク先のサンプルコードを見ると、 REBARBANDINFO 構造体サイズを取得する際に sizeof(REBARBANDINFO) を使用しています。

    おそらくここで正しいサイズが取得できないために Vista では ReBar の中に入れたコントロールの作成に失敗していると思います。

     

    いくつかのコモンコントロール用の構造体のサイズを取得するには専用のマクロがあり、今回の ReBar 場合、  REBARBANDINFO_V3_SIZE または  REBARBANDINFO_V6_SIZE マクロでサイズを取得するのが正しい方法だと思います。

     

    ほかのコモンコントロールの構造体サイズを取得するマクロについては、

    https://msdn2.microsoft.com/en-us/library/ms672577.aspx

    ここに記載されています。

     

     

    Windows SDK の有無で 成功/失敗 するのは、サイズチェックが厳密になったのかもしれません。

    2007年7月5日 4:57
  • 有力なヒント、ありがとうございます。

    いろいろ疑っている過程で、投稿もとの(1)マシンに入っているVisualStudioを修復セットアップすることになってしまいました。

    確認した後、再度報告の書き込みをしたいと思います。

     

    とりあえず連絡だけですがありがとうございます。

     

    (追記)

    確認をしてみたところ、無事表示されるようになりました。

    2007年7月5日 11:36