Hallo und frohes, neues Jahr euch allen!
Ich brauche eine Funktionalität, die feststellt, ob der Inhalt eines EditorGadgets geändert wurde. Für das StringGadget gibt es die EventType() = #PB_EventType_Change Funktion, die diese Prüfung übernimmt. Genau so etwas brauche ich für das EditorGadget. Wie kann ich das bewerkstelligen?
Dank im voraus und Grüße sendet
PureThom
EventType()=#PB_EventType_Change fürs EditorGadget
Versuch mal folgende Zeile nach dem erstellen des Gadget einzufuegen :
Dann sollte das mit "EventType() = #PB_EventType_Change" auch klappen.
Code: Alles auswählen
SendMessage_(GadgetID(#editorgadet),#EM_SETEVENTMASK,0,#ENM_CHANGE)
Benutz dafuer Callbacks
Beispiel :
Beispiel :
Code: Alles auswählen
Macro HiWord(long)
(long >> 16) & $FFFF
EndMacro
Macro LoWord(long)
long & $FFFF
EndMacro
Prototype callback(hwnd,msg,wparam,lParam)
Procedure EditorCallback(hwnd,msg,wparam,lParam)
shared OldEditorCB.Callback
if msg = #WM_SETFOCUS
debug "SETFOCUS"
EndIf
if msg = #WM_KILLFOCUS
debug "KILLFOCUS"
EndIf
ProcedureReturn OldEditorCB(hwnd,msg,wparam,lParam)
EndProcedure
Procedure WindowCallback(hwnd,msg,wparam,lParam)
if msg = #WM_COMMAND
gadget = LoWord(wparam)
code = HiWord(wparam)
if code = #en_change
debug "Change"
debug "gadget :" +str(gadget)
EndIf
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
hwnd = OpenWindow(0,0,0,200,200,"")
CreateGadgetList(hwnd)
EditorGadget(0,0,0,200,200)
SetWindowCallback(@WindowCallback(),0)
OldEditorCB.Callback = SetWindowLong_(GadgetID(0),#GWL_WNDPROC,@EditorCallback())
SendMessage_(GadgetID(0),#EM_SETEVENTMASK,0,#ENM_CHANGE)
Repeat
e = WaitWindowEvent()
Until e = 16