Dragdrop aus Xbase++ in andere Anwendungen ?

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: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Dragdrop aus Xbase++ in andere Anwendungen ?

Beitrag von AUGE_OHR »

hi,

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
meistens ist es, wie hier im Beispiel, eine XBPCLPBRD_FILELIST, aber es könnten auch diese sein
XBPCLPBRD_TEXT Daten im ASCII-Textformat
XBPCLPBRD_BITMAP Grafik im Bitmap-Format
XBPCLPBRD_METAFILE Grafik im Metafile-Format
XBPCLPBRD_FILELIST Liste mit Dateien
alles scheint ja über das Clipboard zu laufen ... aber woran "merkt" es die "andere" Anwendung.

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() :-k

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++ ?
gruss by OHR
Jimmy
Antworten