Column zu einem Listview Window hinzufügen
-
hast du LVS_REPORT als ListView Style angegeben?
@Jochen: erklär mal, bzw schick nen Link wo du das bereits gemacht hast.
-
Ja hab ich in Verwendung, aber es tut sich nichts neues

-
Du solltest die Nummer übergeben!
Deine Funktion tut nur für *eine* ListView! Bei einer weiteren würde es schon schiefgehen...
-
Achso! Naja, für mich reicht es ja, und wer das anders braucht, kann es anders machen.
-
Ich meine wie ich es hinbekomme damit es etwa wie folgt aussieht:
http://www.bilder-space.de/upload/zXw2p2dBs9tSJmf.PNG
Kann mir jemand sagen wie das geht?
-
Also, so kann das in WM_CREATE aussehen:
case WM_CREATE: InitCommonControls(); hFileView = CreateWindow (WC_LISTVIEW, "", WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SHOWSELALWAYS, 15, 70, 470, 299, hMain, (HMENU) LISTVIEW, g_hInst, NULL); InsertListViewColumn (hFileView, "Datei", 210); InsertListViewColumn (hFileView, "Größe", 70, ListView_SetExtendedListViewStyle (hFileView, LVS_EX_FULLROWSELECT); return 0;
-
@BitWax: Bei deinem CreateWindow ist noch nicht mal ein Name als Klasse angegeben worden, wie soll das funktionieren?
Verwendet ihr VisualC++? Vielleicht könnt ihr euch dadurch Arbeitsschritte sparen?!
-
WC_LISTVIEW ist der Name der Klasse!? Der 1. Parameter bezeichnet die Window-Klasse, so geht das!!!
EDIT: vllt. postest du einfach mal deinen Code, damit man nicht immer rumraten muss.
-
AH! Danke!

Ich hab die ganze Zeit nur "LISTBOX" als Klassennamen verwendet
Super jetzt geht`s
Vielen Dank an alle
-
... -.-
-
Ich bräuchte noch mal eine kleine Hilfe:
wie erreicht man es ein Item hinzuzufügen und dies über mehrere Columns hinweg?Beispiel:
--------------------------- | Dateiname | Größe | --------------------------- | Item 1 | 19 KB | <- "Wie krieg ich den Text '19 KB' in`s 2. Column?" | | | ---------------------------
-
bool InsertListViewEntry (HWND hListView, LPTSTR lpEntryValue, int iRowID, int iColID) { static int iEntry = 0; LV_ITEM lvi; lvi.mask = LVIF_TEXT; lvi.pszText = lpEntryValue; lvi.iItem = iRowID; lvi.iSubItem = iColID; if (iColID == 0) ListView_InsertItem (hListView, &lvi); else ListView_SetItem (hListView, &lvi); ++iEntry; return true; }iRowID -> Nummer des Columns (Zählung beginnt bei 0
)
iColID -> Nummer der SpalteEDIT: Beispiel:
InsertListViewEntry (hListview, "Datei.exe", 0, 0); InsertListViewEntry (hListview, "200KB", 1, 0);
-
danke für die Hilfe

PS: war allerdings ein kleiner Denkfehler drin ^^
bool InsertListViewEntry (HWND hListView, LPTSTR lpEntryValue, int iRowID, int iColID) { static int iEntry = 0; LV_ITEM lvi; lvi.mask = LVIF_TEXT; lvi.pszText = lpEntryValue; lvi.iItem = iColID; lvi.iSubItem = iRowID; if (iRowID == 0) ListView_InsertItem (hListView, &lvi); else ListView_SetItem (hListView, &lvi); ++iEntry; return true; }iColID und iRowID waren an zwei Stellen vertauscht

-
Waren sie nicht...ich war bloß eben zu blöd das oben richtig zu beschreiben. "Col" wie Column und eben Row. also sry für den Fehler in meiner Beschreibung
-
Macht ja nix, danke trotzdem für das Beispiel

Aber noch ne andere Frage:
wenn ich als Window-Class keinen Text sondern z.B. WC_LISTVIEW oder TRACKBAR_CLASS verwende funktioniert der Teil mit WM_COMMAND nicht mit diesem Fenster?
Wie kann ich denn sonst die Window-Events abfragen?
-
über WM_NOTIFY. dafür musst du aber einmal die MSDN bemühen, da ich keine Lust habe nur Code zu posten

-
Alles klar, hat auch ganz gut funktioniert, danke

Aber ich hätte noch zwei Fragen:
1.)
Ich hab die ganze "Win32 Programmers Reference" nach ListViews durchsucht und nichts gefunden um die CursorPosition zu verändern bzw. abzufragen. Ich dachte erst es geht auch mit LB\_GETCURSEL aber für LVM\_... gibts sowas nicht
2.)
Gibt es sowas wie z.B. 'LVS_FULLROWSELECTION' um die gesammte Zeile anzucklicken?
-
zu 1.: meinst du welches Item gerade ausgewählt ist?
ListView_GetSelectionMark (hClientListView)damit kannst du die ID des markierten Eintrages bekommen
zu 2. ja:ListView_SetExtendedListViewStyle (hFileView, LVS_EX_FULLROWSELECT);
-
Bei beiden Funktionsaufrufen (ListView_GetSelectionMark, ListView_SetExtendedListViewStyle)
kommt die Fehlermeldung: "undefined reference to 'WinMain@16'"
In welcher DLL stehen denn diese Funktionen vielleicht kann ich diese einfach mit einbinden?!
-
hmmm...also da kann ich nicht helfen, das Problem hatte ich noch nie. Welchen Compiler/IDE benutzt du denn?
EDIT: hast du InitCommonControl aufgerufen? (müsstest du aber eigentlich, weil sonst würdest du ja kein ListView sehen)