[WinAPI] Pobieranie szerokości niewykorzystanej przestrzeni dla kolumn w ListView
Ostatnio zmodyfikowano 2011-07-21 09:25
Mrowqa Temat założony przez niniejszego użytkownika |
[WinAPI] Pobieranie szerokości niewykorzystanej przestrzeni dla kolumn w ListView » 2011-07-20 20:48:57 Witam!
Tak jak w temacie - jak to zrobić ? Konkretnie - zrobiłem sobie ListView z trzema kolumnami z możliwością zmiany szerokości kolumn. Użytkownik może zmieniać szerokości kolumn tak, że część szerokości okna nie przypadnie na żadną z kolumn. Jak pobrać właśnie tę szerokość ?? Makro ListView_GetColumnWidth nie pomogło :( Ani z wartością -1, ani z wartością 3 ... Wiecie jak to zrobić ??
PS albo coś z GetClientRect i szerokością pozostałych elementów ... ( mi jakoś to nie wychodzi ;/ )
Pozdrawiam, Mrowqa |
|
malan |
» 2011-07-20 21:07:43 szerokość listy - (szerokość kolumny pierwszej + szerokość kolumny drugiej + szerokość kolumny trzeciej) ? Przy założeniu, że rozmiar listy jest taki jak okna. |
|
akwes |
» 2011-07-20 21:11:05 Część okna czy część listy? |
|
DejaVu |
» 2011-07-20 21:19:08 Może GetClientRect minus szerokość 3 kolumn? |
|
Mrowqa Temat założony przez niniejszego użytkownika |
» 2011-07-21 09:25:41 No właśnie tak próbowałem ... ale chyba innego wyjścia nie widzę, więc później po próbuje jeszcze raz z tym eksperymentować ... Wczoraj to tak jakoś dziwnie mi przemieszczało kolumny ... Dotychczasowa działająca część algorytmu: ( dotyczącą tego ListView ) double szer = ListView_GetColumnWidth( g_hListInstr, 0 ) + ListView_GetColumnWidth( g_hListInstr, 1 ) + ListView_GetColumnWidth( g_hListInstr, 2 ); ListView_SetColumnWidth( g_hListInstr, 0,(( double ) ListView_GetColumnWidth( g_hListInstr, 0 ) / szer ) *( wym.right -( wym.right / 4 + 57 ) - 300 ) + 1 ); ListView_SetColumnWidth( g_hListInstr, 1,(( double ) ListView_GetColumnWidth( g_hListInstr, 1 ) / szer ) *( wym.right -( wym.right / 4 + 57 ) - 300 ) + 1 ); ListView_SetColumnWidth( g_hListInstr, 2,(( double ) ListView_GetColumnWidth( g_hListInstr, 2 ) / szer ) *( wym.right -( wym.right / 4 + 57 ) - 300 ) + 1 ); MoveWindow( g_hListInstr, wym.right / 4 + 57, wym.bottom / 2 + 5, wym.right -( wym.right / 4 + 57 ) - 293, wym.bottom / 2 - 140, TRUE );
Tak zrealizowałem procentowe rozszerzanie się kolumn, ale bez uwzględnienia pustej przestrzeni ... należy zwrócić uwagę na + 1 przy szerokości ... /edit: RECT rcc; GetClientRect( g_hListInstr, & rcc ); szer = rcc.right - 1.5;
Działa, ale nie dokładnie ... ;( Czasem wyjdzie kilka px za daleko, czasem za blisko ... obawiam się, że dokładniej się nie da :( Pozdrawiam, Mrowqa |
|
« 1 » |