void SetTabStops( ); BOOL SetTabStops( const int& cxEachStop ); BOOL SetTabStops( int nTabStops, LPINT rgTabStops );
Возвращаемое значение
Отлично от нуля, если все позиции табуляции были установлены, иначе 0.
Параметры
cxEachStop
Табуляторы установлены в каждых cxEachStop модулях диалога. См. rgTabStops для описания модуля диалога.
nTabStops
Определяет число табуляторов, чтобы иметь в списке.
rgTabStops
Точки к первого члена массива целых чисел, содержащих позицию табуляции устанавливают в модули диалога. Модуль диалога - горизонтальное или вертикальное расстояние. Один горизонтальный модуль диалога равен четвертой части текущего модуля ширины ядра диалога, и один вертикальный модуль диалога равен восьмой части текущего модуля высоты ядра диалога. Модули ядра диалога вычислены основанными на высоте и ширине текущего шрифта системы. Функция GetDialogBaseUnits Windows возвращает текущие модули ядра диалога в пикселях. Табуляторы должны сортироваться в увеличивающемся порядке, обратная сортировка позиции табуляции не позволяется.
Замечания
Устанавливает позиции табуляции в списке.
Чтобы устанавливать табуляторы к заданному по умолчанию размеру 2 модулей диалога, вызовите версию этой функции без параметров. Чтобы устанавливать табуляторы к размеру другому чем 2, вызовите версию с cxEachStop параметром.
Чтобы устанавливать табуляторы к массиву размеров, используйте версию с rgTabStops и nTabStops параметрами. Табулятор будет установлен для каждого значения в rgTabStops, до номера, определенного nTabStops.
Чтобы отвечать на обращение к SetTabStops функции, список, должно быть, был создан с LBS_USETABSTOPS стилем.
Пример
// Указатель на мой список. extern CListBox* pmyListBox; // Найдите ширину пикселя самой большой первой подстроки. CString str; CSize sz; int nIndex, dx=0; CDC* pDC = pmyListBox->GetDC(); for (int i=0;i < pmyListBox->GetCount();i++) { pmyListBox->GetText( i, str ); if ((nIndex=str.Find('\t')) != -1) str = str.Right(nIndex); sz = pDC->GetTextExtent(str); if (sz.cx > dx) dx = sz.cx; } pmyListBox->ReleaseDC(pDC); // Установить табуляторы в каждом как 1/3 // самой большой строки. // ОБРАТИТЬ ВНИМАНИЕ: Преобразуйте пиксели в модули диалога. pmyListBox->SetTabStops((dx*4/3 * 4) / LOWORD(::GetDialogBaseUnits()));