ビューのサイズをフレームウィンドウに合わせるには – プログラミング – Home

ビューのサイズをフレームウィンドウに合...
 
通知
すべてクリア

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


ふぁいと!
 ふぁいと!
(@ふぁいと!)
ゲスト
結合: 23年前
投稿: 28
Topic starter  

独学で奮闘中の初心者です。
いつもおせわになっております。

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

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


引用未解決
トピックタグ
sara
 sara
(@sara)
ゲスト
結合: 23年前
投稿: 99
 

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

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

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


返信引用
ふぁいと!
 ふぁいと!
(@ふぁいと!)
ゲスト
結合: 23年前
投稿: 28
Topic starter  

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);
にしたらスクロールバーがでなくなりました。どうもすいませんでした。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました