ビューのサイズをフレームウィンドウに合わせるには

[戻る]
ふぁいと! 2002/02/19(火) 09:09:16
独学で奮闘中の初心者です。
いつもおせわになっております。

現在、MFCのSDIエクスプローラースタイルでツリーから選択したアイテムによって
右ペインに数種類のリストビューやフォームビューを表示するものを作成しています。
リストビューを表示したときに水平スクロールバーがでてしまうのですが、これを
ウィンドウの最大化やツリービューとの境界線、フレームのサイズをマウスで変更した
ときにもフレームウィンドウのサイズに合わせてスクロールバーがでないようにするには
OnDraw()かOnInitialUpdate()にどうのようなコードを書けばよいのか教えてください。

ちなみにリストビューはリストビューコントロールをダイアログに貼り付けてつくった
ものではありません。宜しくお願いします。

sara 2002/02/19(火) 09:32:24
ビューのサイズを取得して、そのサイズに合わせてリストビューの列幅を設定すれば良いと思い
ます。
OnInitialUpdate()の中では、列を挿入するときに列幅を設定します。

OnDraw()の中では必要ないでしょう。

ビューのWM_SIZEメッセージに対するOnSize()関数の中で処理したほうが良いと思います。
この関数内では、SetColumnWidth()を使って列幅が変更します。

ふぁいと! 2002/02/19(火) 14:19:25
[[解決]]
saraさんありがとうございます。

GetClientRect()やGetWindowRect()などでいろいろためしていたのですが、
実際問題だったのはカラムのところでした。

TCHAR title[][20] = {_T("列1"), _T("列2")};
int width[]={100};
LV_COLUMN myColumn;
myColumn.mask=LVCF_TEXT | LVCF_WIDTH;
int    i;
for (i=0; i<sizeof(title) / (sizeof(TCHAR)*20); i++)
{
  myColumn.pszText = title[i];
  myColumn.cx = width[i];
  listCtrl.InsertColumn(i,&myColumn);
}
を 
ret = listCtrl.InsertColumn(0, "列1", LVCFMT_LEFT, ((myRect.right - 
myRect.left) * 1/2), 1);
にしたらスクロールバーがでなくなりました。どうもすいませんでした。

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