Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinAPI] Pobieranie szerokości niewykorzystanej przestrzeni dla kolumn w ListView

Ostatnio zmodyfikowano 2011-07-21 09:25
Autor Wiadomość
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
P-36377
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.
P-36379
akwes
» 2011-07-20 21:11:05
Część okna czy część listy?
P-36381
DejaVu
» 2011-07-20 21:19:08
Może GetClientRect minus szerokość 3 kolumn?
P-36383
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 )
C/C++
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:
C/C++
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
P-36417
« 1 »
  Strona 1 z 1