Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.10.2007, 13:37

[Win32 API]Drag'n Drop Ansatz

Hi leutz,

ich versuche gerade folgendes zu realisieren:
Man sollte Listenelemente von einer Listbox auf ein MDI Fenster ziehen können.
Mir fehlt aber momentan total der Ansatz, den weder MSDN noch winapi.net sind da ergiebig. Ich erfahre zwar wie ich Listenelemente per Drag'n Drop sortieren kann aber das hilft mir nicht viel.
Ich hab mir gedacht dass es sowas wie ne Dragged Message gibt und das ne weitere Message gesendet wird wenn das Objekt losgelassen wird und ich dann einfach die Positionsvariable mit GetCursorPos und ScreenToClient abfragen kann. Doch hat mir google auch nichts über so eine Message o.ä gebracht.
Ich glaub ich sitz nur auf der Leitung und deshalb fällt mir nichts ein wie ich das am besten realisiere. Deshalb rüttelt mich bitte mal imaginär wach ^^
Schon mal danke für eure Hilfe
TheProgrammer
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

28.10.2007, 13:55

Dein "Zieh-" Vorgang in der LBUTTONDOWN Notifikation behandeln.
@D13_Dreinig

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

3

28.10.2007, 15:22

WM_MOUSEMOVE liefert über den Parameter WPARAM den Zustand der Maustasten, der Strg-Taste und der Umschalttaste über die folgenden Konstanten:
MK_LBUTTON
MK_MBUTTON
MK_RBUTTON
MK_SHIFT
MK_CONTROL

Also prüftst du bei WM_MOUSMOVE den Zustand der linken maustaste, was dann etwa so aussieht:

C-/C++-Quelltext

1
2
3
4
5
6
case WM_MOUSEMOVE:
if(wParam & MK_LBUTTON)
{
// Reaktion

}
break;


Alternativ kannst du auch bei WM_MOUSEMOVE über GetKeyState
mit der Konstanten VK_LBUTTON den aktuellen Zustand der linken Maustaste prüfen.

4

28.10.2007, 17:11

Schon mal vielen dank ;) . Ich werd mir aus WM_MOUSEMOVE und WM_LBUTTONDOWN was zusammenbauen.

Allerdings würde mich noch in intressieren ob die WinAPI ein paar spezielle Drag'n Drop Funktionen hat. :?:
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

28.10.2007, 18:41

Die WinAPI hat sowas nur für Dateien (WM_DROPFILES), das bringt dir hier aber nicht besonders viel. OLE bietet aber etwas an das in deine Richtung geht.
@D13_Dreinig

6

08.11.2007, 16:37

Hey,

ich hatte gestern mal wieder etwas Zeit um damit zu experimentieren und hatte ein Problem. Ich hab nämlich festgestellt dass WINDOWS die Nachrichten nur an das Widget schickt auf dem die Maus bewegt wird. D.h:
Er sendet die Nachrichten an die listbox oder den MDI CLient und nie an mein Fenster.

Gibt es etwas vergleichbares bei dem die Messages an das Parentwidget geschickt werden?

mfg
TheProgrammer
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

11.11.2007, 10:59

Was du auch probieren könntest ist eine Drag List Box! :) Einfach deine ListBox über MakeDragList in eine solche umwandeln! Dann stehen dir vier weitere Notifikationen (DL_BEGINDRAG, DL_CANCELDRAG, DL_DRAGGING und DL_DROPPED) zur Verfügung.
@D13_Dreinig

Werbeanzeige