was ist auf dem Desktop an Position x,y ?

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

was ist auf dem Desktop an Position x,y ?

Beitrag von AUGE_OHR »

hi,

nachdem ich das Drop mit den activeX hin bekommen habe ist nun das Drag dran.

Code: Alles auswählen

METHOD XbpListView:_OLEDragDrop(oData,nEffect,nButton,nShift,nx,ny)
liefert mir z.b.
OLESTARTDRAG oData ??? Effekt :3
OLEDRAGOVER ITALIC.bmp Effekt :1 Button :1 Shift :0 nx :47.00 ny :228.00 State :0
OLEDRAGOVER ITALIC.bmp Effekt :1 Button :1 Shift :0 nx :47.00 ny :228.00 State :2
OLEDRAGOVER ITALIC.bmp Effekt :1 Button :1 Shift :0 nx :42.00 ny :230.00 State :2
OLEDRAGOVER ITALIC.bmp Effekt :1 Button :1 Shift :0 nx :36.00 ny :232.00 State :2
OLEDRAGOVER ITALIC.bmp Effekt :1 Button :1 Shift :0 nx :30.00 ny :234.00 State :2
OLEDRAGOVER ITALIC.bmp Effekt :1 Button :1 Shift :0 nx :24.00 ny :236.00 State :2
OLEDRAGOVER ITALIC.bmp Effekt :1 Button :1 Shift :0 nx :17.00 ny :237.00 State :2
OLEDRAGOVER ITALIC.bmp Effekt :1 Button :1 Shift :0 nx :9.00 ny :238.00 State :2
OLEDRAGOVER ITALIC.bmp Effekt :1 Button :1 Shift :0 nx :3.00 ny :239.00 State :2
OLEDRAGOVER ITALIC.bmp Effekt :1 Button :1 Shift :0 nx :0.00 ny :404.00 State :1
OLECOMPLETEDRAG 509 Effekt :0
ich bin dann in dem Fenster angelangt und lasse die linke Maustaste los.
Nun müsste die "Kopier-" Aktion starten, aber woher weiss ich nun das "Ziel" ?

Es ist das Fenster an der Position 0,404 wo die Maus stand, aber zu "was" gehört das Fenster ?
... und wenn es kein Fenster sondern ein Icon auf dem Desktop ist ( als Parameter Liste ) ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: was ist auf dem Desktop an Position x,y ?

Beitrag von AUGE_OHR »

hm ... ich "denke" das ich falsch "gedacht" habe ... "denke" ich ...

wenn ich ein "Drop" auf meine Xbase++ Application mache muss meine Application für den "Empfang" sorgen.

Dabei kommt dann als oData ein IVbDataObject, auf das ich die Methode :GetFormat() nicht mit den Xbase++ Konstanten anwenden kann.

über die Property :Files bekomme ich jedoch eine "collection of filenames", also ein Array.
Die "Formate" verwenden nun die VB "vbCFFiles" Konstanten

Code: Alles auswählen

CASE oDragData:GetFormat( ccCFFiles    )
   oFiles := oDragData:Files
   iMax   := oFiles:Count
   FOR i:= 1 TO iMax
       cData += oFiles:Item(i)
      AADD(aFiles, oFiles:Item(i) )
   NEXT
wenn ich also ein "Drag" machen möchte muss ich wohl den "umgekehrten" Weg gehen.

ich müsste wohl ein DragDataObject() erzeugen und die Property :Files "auffüllen" um die Aktion einzuleiten.
das müsste ich wohl mit der Method

Code: Alles auswählen

oFiles:Add(bstrFilename As String, vIndex As Variant)
machen

Damit müsste der "Empfänger" dann seine Routine zum verarbeiten von selbst starten wenn ich die linke Maustaste loslasse.

Ich kann es wohl scheinbar nicht durch das Clipboard "schieben" sondern muss es als DragDataObject() "kapseln"
gruss by OHR
Jimmy
Antworten