EnableGadgetDrop() und Web- bzw. EditorGadget

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
Olaf
Beiträge: 117
Registriert: 20.04.2006 14:51
Wohnort: 66606 St.Wendel (Niederlinxweiler, Dr.Albert-Schweitzer-Str.9)
Kontaktdaten:

EnableGadgetDrop() und Web- bzw. EditorGadget

Beitrag 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)?
PB 4.xx (Windows & Linux & Mac OS X)
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion." :lol:
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: EnableGadgetDrop() und EditorGadget

Beitrag 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
Hygge
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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


Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
Hygge
Gesperrt