Seite 1 von 1

EnableGadgetDrop() und Web- bzw. EditorGadget

Verfasst: 23.07.2007 19:19
von Olaf
Hi alle zusammen!
War schon länger nicht mehr aktiv im Forum, hab jetzt aber doch nochmal was loszuwerden.
Irgendwie verweigern bei mir WebGadget und EditorGadget das Droppen von Dateien. Die anderen Gadgets habe ich noch nicht alle diesbezüglich getestet, aber bei den meisten gehts problemlos (ich verwende die neuen Funktionen der Version 4.10 BETA 2).
Ich bräuchte aber dringend das Droppen auf eines dieser beiden Gadgets, da ich momentan einen Messenger schreibe und die gleiche Funktionalität beim Senden von Dateien bieten möchte wie icq sie bietet, also ein Senden durch das Ziehen der Datei aufs Message-Fenster des jeweiligen Chat-Partners.
Tritt das Problem bei euch auch auf bzw. ist es ein Bug der Funktion oder irgendwie begründet fehlend oder liegts generell am aktuellen Status der 4.10er Version (->BETA)?

Re: EnableGadgetDrop() und EditorGadget

Verfasst: 11.10.2007 10:37
von Kiffi
[Push]

ich benötige die Drop-Funktionalität auf ein EditorGadget für ein aktuelles
Projekt. Wieso lassen sich keine Dateien auf das EditorGadget droppen?
EnableWindowDrop() funktioniert hingegen.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 322, 150, "EditorGadget") 
  If CreateGadgetList(WindowID(0)) 
    EditorGadget(0, 8, 8, 306, 133) 
    EnableGadgetDrop(0, #PB_Drop_Files, #PB_Drag_Copy)
    EnableWindowDrop(0, #PB_Drop_Files, #PB_Drag_Copy)
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
  EndIf
EndIf
(getestet mit PB4.10 Beta 4)

Danke & Grüße ... Kiffi

Verfasst: 11.10.2007 14:09
von edel
Schon erstaunlich das dies hier der einzige Thread zu dem Thema ist...
Warum es nicht geht weiss ich auch nicht, aber ich kann euch ein kleinen
Workaround bzw den Api Weg geben :

Code: Alles auswählen

Procedure edit_cb(hwnd,umsg,wparam,lparam)
  old = GetWindowLong_(hwnd,#GWL_USERDATA)
  
  If umsg = #WM_DROPFILES
    count = DragQueryFile_(wparam,-1,0,0)
    
    For i = 0 To count - 1
      DragQueryFile_(wparam,i,@buffer.s{#MAX_PATH},#MAX_PATH)      
      
      AddGadgetItem(0,i,buffer)
      
    Next 
    
    DragFinish_(wparam)  
    ProcedureReturn 0    
  EndIf 

  ProcedureReturn CallFunctionFast(old,hwnd,umsg,wparam,lparam)
EndProcedure

Procedure SetGadgetCallback(callback,id)

  old = SetWindowLong_(GadgetID(id),#GWL_WNDPROC,callback)
  SetWindowLong_(GadgetID(id),#GWL_USERDATA,old)
  
  ProcedureReturn old
EndProcedure

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 322, 150, "EditorGadget")
  If CreateGadgetList(WindowID(0))
    EditorGadget(0, 8, 8, 306, 133)    
    DragAcceptFiles_(GadgetID(0),#True)
    SetGadgetCallback(@edit_cb(),0)
        
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
    
  EndIf
EndIf



Verfasst: 11.10.2007 14:16
von Kiffi
Hallo edel,

danke für den Workaround! :allright:

Ich möchte nur sichergehen, dass ich nichts übersehen habe. Denn
ansonsten würde ich was entsprechendes im englischen Board posten, damit
die Chance erhöht wird, dass einer des PB-Teams etwas davon mitbekommt.

Danke & Grüße ... Kiffi