innerhalb einer Xbase++ Anwendung benötigt man für "DragDrop" ja keine "Extras" ... das geht mit "pure" Xbase++.
von "Aussen" kann man mit o:dropZone := .T. das DragDataObject() nutzen um das Format bei einem "drop" in eine Xbase++ Anwendung zu bekommen.
Code: Alles auswählen
o:dragEnter := {| aState, oData, oSelf | MyDragEnter(aState,oData,oSelf)}
o:dragDrop := {| aState, oData, oSelf | MyDragDrop(aState,oData,oSelf) }
FUNCTION MyDragEnter(aState,oData,oObj)
IF oData:QueryGetFormat(XBPCLPBRD_FILELIST) == .T.
RETURN XBP_DROPMODE_COPY
ENDIF
RETURN XBP_DROPMODE_NONE
FUNCTION MyDragDrop( aState,oData,oObj )
LOCAL aFiles := oData:GetData( XBPCLPBRD_FILELIST )
LOCAL cBuffer := oObj:GetData()
//
// Aktion mit aFiles
RETURN XBP_DROPMODE_COPY
alles scheint ja über das Clipboard zu laufen ... aber woran "merkt" es die "andere" Anwendung.XBPCLPBRD_TEXT Daten im ASCII-Textformat
XBPCLPBRD_BITMAP Grafik im Bitmap-Format
XBPCLPBRD_METAFILE Grafik im Metafile-Format
XBPCLPBRD_FILELIST Liste mit Dateien
mir ist schon klar das ich das "Handle" der "anderen" Anwendung (Ziel) zunächst ermitteln muss.
dann muss ich dem "Ziel" wohl irgendwie "mitteilen" das ich was "droppen" möchte ... SendMessageA() ?
und dann ... alles ins Clipboard "schreiben" oder per SendMessageA() einen String verschicken ?
für SendMessageA() benötige ich dann meistens noch das "Handle" von der Class an die der String gehen soll.
Für Notepad wäre das dann die Class "Edit" ( WC_EDIT ), für Word 2007 aber Class "_Wwg" ...
aber beide verfügen über STRG-V ... also dann per KeySend()
Frage : was muss ich machen wenn ich in Notepad oder Word per "Drop" was aus eine Xbase++ Application "einfügen" will.
Nachtrag Frage : kann das Express++ ?