リストビューのスクロールバーが表示されない

[戻る]
いしだ 2012/10/23(火) 18:29:38
VS2008や2010で、MFC標準のダイアログベースで作成し、レポート形式のリストビューを
置き、
CListCtrlのメンバ(m_list)を用意した状態で、OnInitDialog()内で

m_list.InsertColumn(0, _T("0000"), LVCFMT_LEFT, 300);
m_list.InsertColumn(1, _T("1111"), LVCFMT_LEFT, 300);
m_list.InsertColumn(2, _T("2222"), LVCFMT_LEFT, 300);
m_list.InsertColumn(3, _T("3333"), LVCFMT_LEFT, 300);

と書いただけなのですが、起動時にスクロールバーが表示されません。
カラムの境界を少しでもドラッグすると初めて表示されます。

Windows7で発生し、同じものをXPで動かすとちゃんと表示されるのですが、
これはWindows7のバグと考えるべきなのでしょうか?
それとも、XPでたまたま動いていただけで、なにか足りない処理でもありますでしょうか?

forty-five 2012/10/26(金) 00:11:01
コモンコントロールのバージョンによる不具合だと思います。

StdAfx.h のコモンコントロール関係の所を
コメントアウトすると XP と同じになります。

もしくは最後に m_list.Scroll(CSize(0, 0)); を追加すれば
スクロールバーが出るようになります。

いしだ 2012/10/26(金) 10:31:30
[[解決]]
ありがとうございます。
Windows7のコモンコントロールのバグだろうということですね。
教えていただいた方法で回避することができました。

過去のソースに同じような方法でカラムを設定していた箇所が多くあります。
それらをWindows7で動かすのが怖いです。

古いスレッドには追加発言できません。