link7632 link7633 link7634 link7635 link7636 link7637 link7638 link7639 link7640 link7641 link7642 link7643 link7644 link7645 link7646 link7647 link7648 link7649 link7650 link7651 link7652 link7653 link7654 link7655 link7656 link7657 link7658 link7659 link7660 link7661 link7662 link7663 link7664 link7665 link7666 link7667 link7668 link7669 link7670 link7671 link7672 link7673 link7674 link7675 link7676 link7677 link7678 link7679 link7680 link7681 link7682 link7683 link7684 link7685 link7686 link7687 link7688 link7689 link7690 link7691 link7692 link7693 link7694 link7695 link7696 link7697 link7698 link7699 link7700 link7701 link7702 link7703 link7704 link7705 link7706 link7707 link7708 link7709 link7710 link7711 link7712 link7713 link7714 link7715 link7716 link7717 link7718 link7719 link7720 link7721 link7722 link7723 link7724 link7725 link7726 link7727 link7728 link7729 link7730 link7731 link7732 link7733 link7734 link7735 link7736 link7737 link7738 link7739 link7740 link7741 link7742 link7743 link7744 link7745 link7746 link7747 link7748 link7749 link7750 link7751 link7752 link7753 link7754 link7755 link7756 link7757 link7758 link7759 link7760 link7761 link7762 link7763 link7764 link7765 link7766 link7767 link7768 link7769 link7770 link7771 link7772 link7773 link7774 link7775

Форум — Ответы     (  К темам )
 ?  ACD: горизонтальный скроллинг в TListBox (08-03-2003 03:31:50)
доброго времени суток.
У меня такая ситуация :в Listbox время от времени
добавляются и убираются строки.Некоторые длиннее
чем надо.В конструкторе формы написал :
listBox1->Perform(LB_SETHORIZONTALEXTENT, 1000, Longint(0));не действует — действует если вставмть после добавления строк но всеравно не то — ползунок то получается фиксированной длины.Помоему правильнее будет вставить "это" после добавления первой
строки а потом измерять TextExtent (так его кажется) самой длинной строки и соответственно изменять длину ползунка — если кто знает как это все сделать правильно
и красиво plz. поделитесь (текст должен быть именно в ListBox)

И еще вопрос а как собственно сделать все контролы на форме плоскими(особенно
скролбары в листбоксе) ?
Ctl3d- вроде не то?
 Devnvd (09-03-2003 17:49:32)
Добавление строки в ListBox, из примера SDK:
// ************************************************************************
// FUNCTION : ListBoxInsert( HWND, LPLONG, LPCTSTR )
// PURPOSE : Inserts the string into the listbox.
// COMMENTS : Returns the index of the string inserted
// ************************************************************************
LRESULT
ListBoxInsert( HWND hWndListBox, LPLONG lpMaxStrLen, LPCTSTR lpszString )
{
static LONG MaxTextExtent = 0;

LRESULT Index;

if( lpszString == 0L ) {
MaxTextExtent = 0;
SendMessage( hWndListBox, LB_SETHORIZONTALEXTENT, 0, 0 );
return( 0 );
}

if( hWndListBox != 0L ) {
HDC hDC;
SIZE Size;
LONG StrLen;

if( (StrLen = lstrlen( lpszString)) > *lpMaxStrLen )
*lpMaxStrLen = StrLen;
hDC = GetDC( hWndListBox );
GetTextExtentPoint( hDC, lpszString, StrLen, &Size );
ReleaseDC( hWndListBox, hDC );
if( Size.cx > MaxTextExtent ) {
MaxTextExtent = Size.cx;
SendMessage( hWndListBox, LB_SETHORIZONTALEXTENT, (WPARAM) (MaxTextExtent*1.1), 0 );
}
Index = SendMessage( hWndListBox, LB_ADDSTRING, 0, (LPARAM) lpszString );
SendMessage( hWndListBox, LB_SETCURSEL, Index, 0 );
}

return( Index );
}

По поводу плоскоты.
В Windows 1.0 все элементы были плоскими, этот интерфейс ужасно примитивен, и с появлением 3D всё стало намного приятнее. Что-же это вас тянет обратно быть "плоскими"? Если бы это действительно было необходимым, то Bill оставил бы для нас эту плоскосту изначально. Но сейчас в WinApi кроме FlatSB ничего нет. Да и к тому же:
Note Flat scroll bar APIs are implemented in Comctl32.dll versions 4.71 through 5.82. Comctl32.dll versions 6.00 and higher do not support flat scroll bars.
 ACD (10-03-2003 03:34:13)
to DEVNVD
>Note Flat scroll bar APIs are implemented in Comctl32.dll versions 4.71 through 5.82. Comctl32.dll versions 6.00 and higher do not support flat scroll bars.
а жаль — надоели однотипные интерфейсы , а рисовать свои контролы или скины как-то душа не лежит