リスト・ボックスの水平スクロールの設定
リストボックスの水平スクロールを設定したい場合、ダイアログ・エディタで
プロパティを開いて、水平スクロールにチェックを入れるのみでは水平スクロールバー
が表示されません。それと同時に”SetHorizontalExtent”を使用してスクロール幅を
設定する必要があります。SetHorizontalExtentの詳細はMSDNを参照して下さい。
【サンプル】
CString ss;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
//エディットボックスからデータを取得
CEdit* myEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1);
myEdit1->GetWindowText(ss);
//リストボックスへデータを追加
CListBox* myListBox1 = (CListBox*)GetDlgItem(IDC_LIST1);
myListBox1->AddString(ss);
//テキストボックス上のテキストデータのフォント情報を取得
CDC* pDC = myListBox1->GetDC();
CFont* pFont = myListBox1->GetFont();
CFont* pOldFont = pDC->SelectObject(pFont);
pDC->GetTextMetrics(&tm);
//テキストボックス上に追加された文字列の長さ(ピクセル)を取得
myListBox1->GetText(0, ss);
sz = pDC->GetTextExtent(ss);
dx = sz.cx + tm.tmAveCharWidth; //設定するスクロール幅を少し広げる
//デバイス コンテキストを解放
myListBox1->ReleaseDC(pDC);
//水平スクロール幅を指定
myListBox1->SetHorizontalExtent(dx);