link7242 link7243 link7244 link7245 link7246 link7247 link7248 link7249 link7250 link7251 link7252 link7253 link7254 link7255 link7256 link7257 link7258 link7259 link7260 link7261 link7262 link7263 link7264 link7265 link7266 link7267 link7268 link7269 link7270 link7271 link7272 link7273 link7274 link7275 link7276 link7277 link7278 link7279 link7280 link7281 link7282 link7283 link7284 link7285 link7286 link7287 link7288 link7289 link7290 link7291 link7292 link7293 link7294 link7295 link7296 link7297 link7298 link7299 link7300 link7301 link7302 link7303 link7304 link7305 link7306 link7307 link7308 link7309 link7310 link7311 link7312 link7313 link7314 link7315 link7316 link7317 link7318 link7319 link7320 link7321 link7322 link7323 link7324 link7325 link7326 link7327 link7328 link7329 link7330 link7331 link7332 link7333 link7334 link7335 link7336 link7337 link7338 link7339 link7340 link7341 link7342 link7343 link7344 link7345 link7346 link7347 link7348 link7349 link7350 link7351 link7352 link7353 link7354 link7355 link7356 link7357 link7358 link7359 link7360 link7361 link7362 link7363 link7364 link7365 link7366 link7367 link7368 link7369 link7370 link7371 link7372 link7373 link7374 link7375 link7376 link7377 link7378 link7379 link7380 link7381 link7382 link7383

Форум — Ответы     (  К темам )
 ?  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.
а жаль — надоели однотипные интерфейсы , а рисовать свои контролы или скины как-то душа не лежит