Narf! Geschrieben 27. Juli 2012 Geschrieben 27. Juli 2012 Hallo an alle Zieher und Loslasser, ich habe für Drag and Drop in einem ListCtrl das Beispiel von codeproject genommen. Zum Nachbauen unbedingt die Kommentare lesen. Wenn das ListCtrl in der Listen- oder Bericht-Ansicht ist, dann werden die Elemente neu angeordnet. In der Bildansicht (Icon, Minisymbol) nicht. Es werden alle Schritte abgearbeitet, aber das gezogene Element tauscht den Platz nicht. Müssen für Bildansichten andere Flags gesetzt werden? Zitieren
Hexagon Geschrieben 27. Juli 2012 Geschrieben 27. Juli 2012 Moin. Laut MSDN sollten die das in der "Bildansicht" selbstständig können. Versuch doch mal einfach am Anfang des Dragvorgangs heraus zufinden ob es in einem der Beiden ist und dann den ganz normalen MFC-Code ausführen zulassen. Zitieren
Narf! Geschrieben 27. Juli 2012 Autor Geschrieben 27. Juli 2012 Die MSDN bezieht sich auf CListView. Was auch komisch ist: In der Bildansicht wird ein DragImage erzeugt (zeigt den Titel des Items an) und in der Listenansicht nicht. Zitieren
Hexagon Geschrieben 27. Juli 2012 Geschrieben 27. Juli 2012 Die MSDN bezieht sich auf CListView. Hast Du es mal ausprobiert? Zitieren
Narf! Geschrieben 27. Juli 2012 Autor Geschrieben 27. Juli 2012 Ich habe in OnLvnBegindragList alles bis auf die erste und letzte Zeile auskommentiert. Es passiert nichts. Mit m_cListCtrl.GetView() erhalte ich immer 0. Zitieren
Hexagon Geschrieben 27. Juli 2012 Geschrieben 27. Juli 2012 Du sollst nichts auskommentieren, sondern bei allen Funktionen zu Beginn abfragen ob LVS_ICON oder LVS_SMALLICON gesetzt ist und wenn ja denn normalen MFC-Code aufrufen... Zitieren
Narf! Geschrieben 30. Juli 2012 Autor Geschrieben 30. Juli 2012 ggflächerlichmach: Welchen MFC-Code? Ich fange mit OnLvnBegindragList das Beginnen des Drag-Vorganges ab und führe den Beispielcode aus. Den Beispielcode habe ich auskommentiert, sodass nur die erste Zeile LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR); und die letzte Zeile *pResult = 0; übrig bleiben. Und was die Ansicht betrifft: Mit m_cListCtrl.GetView() erhalte ich immer 0. Zitieren
Hexagon Geschrieben 31. Juli 2012 Geschrieben 31. Juli 2012 Wenn das ListCtrl in der Listen- oder Bericht-Ansicht ist, dann werden die Elemente neu angeordnet. In der Bildansicht (Icon, Minisymbol) nicht. Hm... ich hab gerade auf der CodeProjectSeite was gelesen: If your CListCtrl includes icons, don't forget to change the "lvi.mask=LVIF_TEXT" line. Zitieren
Narf! Geschrieben 31. Juli 2012 Autor Geschrieben 31. Juli 2012 Habe alle Zeilen, die es betrifft, auf "lvi.mask=LVIF_TEXT|LVIF_IMAGE;" ergänzt. Bleibt alles gleich. Zitieren
Hexagon Geschrieben 31. Juli 2012 Geschrieben 31. Juli 2012 Und auch iImage gesetzt? Was gibt Dir den InsertItem bzw. DeleteItem zurück? Zitieren
Narf! Geschrieben 1. August 2012 Autor Geschrieben 1. August 2012 Geben mir genau die Werte zurück, die es sein sollen. Es scheint wirklich nur daran zu liegen, dass die Elemente nicht neu angeordnet werden. Ich habe mir mit TRACE das gezogene Element und das Element, wo eingefügt werden soll ausgeben lassen. Und das ist das Ergebnis: Ausgehend von: 0 - Item 1 1 - Item 2 2 - Item 3 3 - Item 4 Item 1 gezogen auf Item 4 = Gezogen 0, Eingefügt 3; die obige Liste bleibt gleich. Item 1 gezogen auf Item 4 = Gezogen 2, Eingefügt 3; die obige Liste bleibt gleich. Es fehlt also nur das neue Anordnen der Elemente. Und jetzt kommt mir eine Idee: In den Eigenschaften des CListCtrl-Fensters bei "Verhalten -> Automatisch Anordnen" auf TRUE setzen :upps Das wars. Und zum Schluss: Wie bekomme ich raus, ob das ListCtrl in der Bericht- oder Symbolansicht ist? Wie schon geschrieben, mit GetView() erhalte ich immer 0. Zitieren
Klotzkopp Geschrieben 1. August 2012 Geschrieben 1. August 2012 mit GetView() erhalte ich immer 0.Kann ich nicht reproduzieren. Bist du sicher, dass du das richtige Steuerelement abfragst? Zitieren
Narf! Geschrieben 1. August 2012 Autor Geschrieben 1. August 2012 Ich habe das mit dem Manifest noch eingerichtet und dann geht es. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.