CListBox::SetTabStops
更新 : 2007 年 11 月
リスト ボックスにタブ ストップ位置を設定します。
void SetTabStops( );
BOOL SetTabStops(
const int& cxEachStop
);
BOOL SetTabStops(
int nTabStops,
LPINT rgTabStops
);
パラメータ
cxEachStop
タブ ストップは、cxEachStop で指定したダイアログ単位ごとに設定します。ダイアログ単位については rgTabStops を参照してください。nTabStops
リスト ボックス内のタブ ストップの数を指定します。rgTabStops
タブ ストップ位置をダイアログ単位で持つ整数配列の最初のメンバを指します。ダイアログ単位とは、水平方向または垂直方向の距離を表す単位です。1 水平ダイアログ単位は、現在のダイアログ ベース単位の幅の 1/4 です。1 垂直ダイアログ単位は、現在のダイアログ ベース単位の高さの 1/8 です。ダイアログの基本単位は、現在のシステム フォントの高さと幅を基準に計算されます。Windows 関数の GetDialogBaseUnits は、現在のダイアログの基本単位をピクセル数で返します。タブ ストップは昇順に格納します。バック タブは使用できません。
戻り値
タブが設定された場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
このメンバ関数をパラメータなしで呼び出すと、タブ ストップが既定の 2 ダイアログ単位で設定されます。サイズを 2 以外に設定するには、引数 cxEachStop を指定してこのメンバ関数を呼び出します。
サイズの配列を使ってタブ ストップを設定するには、rgTabStops と nTabStops を指定します。rgTabStops で指定した値のタブ ストップが nTabStops で指定した数だけ設定されます。
SetTabStops メンバ関数に応答できるのは、LBS_USETABSTOPS スタイルで作成されているリスト ボックスだけです。
使用例
// Find the pixel width of the largest first substring.
CString str;
CSize sz;
int nIndex, dx = 0;
CDC* pDC = myListBox.GetDC();
for (int i = 0; i < myListBox.GetCount(); i++)
{
myListBox.GetText( i, str );
if ((nIndex = str.Find('\t')) != -1)
str = str.Right(nIndex);
sz = pDC->GetTextExtent(str);
if (sz.cx > dx)
dx = sz.cx;
}
myListBox.ReleaseDC(pDC);
// Set tab stops at every one and 1/3 units
// of the largest string.
// NOTE: Convert pixels to dialog units.
myListBox.SetTabStops((dx*4/3 * 4) / LOWORD(::GetDialogBaseUnits()));
必要条件
ヘッダー : afxwin.h