Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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.

Geschrieben

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.

Geschrieben

Ich habe in OnLvnBegindragList alles bis auf die erste und letzte Zeile auskommentiert.

Es passiert nichts.

Mit m_cListCtrl.GetView() erhalte ich immer 0.

Geschrieben

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...

Geschrieben

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.
Geschrieben
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.
Geschrieben

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...