Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

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.

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

  • Autor

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

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.