独学で奮闘中の初心者です。
いつもおせわになっております。
現在、MFCのSDIエクスプローラースタイルでツリーから選択したアイテムによって
右ペインに数種類のリストビューやフォームビューを表示するものを作成しています。
リストビューを表示したときに水平スクロールバーがでてしまうのですが、これを
ウィンドウの最大化やツリービューとの境界線、フレームのサイズをマウスで変更した
ときにもフレームウィンドウのサイズに合わせてスクロールバーがでないようにするには
OnDraw()かOnInitialUpdate()にどうのようなコードを書けばよいのか教えてください。
ちなみにリストビューはリストビューコントロールをダイアログに貼り付けてつくった
ものではありません。宜しくお願いします。
ビューのサイズを取得して、そのサイズに合わせてリストビューの列幅を設定すれば良いと思い
ます。
OnInitialUpdate()の中では、列を挿入するときに列幅を設定します。
OnDraw()の中では必要ないでしょう。
ビューのWM_SIZEメッセージに対するOnSize()関数の中で処理したほうが良いと思います。
この関数内では、SetColumnWidth()を使って列幅が変更します。
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);
にしたらスクロールバーがでなくなりました。どうもすいませんでした。