aha, wusste ich nicht. Ich wollte nur mal mit Copy&Paste anschauen, was Ihrhallodri hat geschrieben:Ohne Callback muss du am Ende beide Gadgets mit Freegadget wieder frei geben.
da schönes bastelt.
Grüße ... Kiffi

Code: Alles auswählen
EnableExplicit
XIncludeFile "Scintilla.pb"
Scintilla_Init() ; Initfunktion, wird später in der Lib nicht mehr gebraucht
Define.Scintilla *Edit1, *Edit2 ; Objectvariable für Scintilla-Control definieren
Define.l Splitter, *pdoc
#PB_Window_Flags = #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget
If OpenWindow(0, #PB_Ignore, 0, 640, 480, "SplitView", #PB_Window_Flags) = #False : End : EndIf
RemoveKeyboardShortcut(0, #PB_Shortcut_All) ; Ansonsten funktioniert TAB nicht!
If CreateGadgetList(WindowID(0))
*Edit1 = New_Scintilla(#PB_Any, 0, 0, 0, 0)
*Edit2 = New_Scintilla(#PB_Any, 0, 0, 0, 0)
*pdoc = *Edit1\SciMsg(#SCI_GETDOCPOINTER)
*Edit2\SciMsg(#SCI_SETDOCPOINTER, 0, *pDoc)
Splitter = SplitterGadget(#PB_Any, 0, 0, 640, 480, *Edit1\Id, *Edit2\Id)
SetActiveGadget(*Edit1\Id)
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_SizeWindow
ResizeGadget(Splitter, #PB_Ignore, #PB_Ignore, WindowWidth(0), WindowHeight(0))
EndSelect
ForEver
Scintilla_End() ; Endfunktion, wird später in der Lib nicht mehr gebraucht
Code: Alles auswählen
EnableExplicit
XIncludeFile "Scintilla.pb"
Scintilla_Init() ; Initfunktion, wird später in der Lib nicht mehr gebraucht
Enumeration ; Gadgets
#Sci1
#Sci2
#Splitter
EndEnumeration
Procedure SciCallback(*Gadget.long, Window, Message, wParam, lParam)
Protected *msg.SCNotification
Select Message
Case #WM_NOTIFY
*msg = lParam
If *msg\NMHDR\hwndFrom = *Gadget\l
Select *msg\NMHDR\code
Case #SCN_UPDATEUI
Debug "SCN_UPDATEUI"
Case #SCN_CHARADDED
Debug "SCN_CHARADDED"
Case #SCN_DOUBLECLICK
Debug "SCN_DOUBLECLICK"
Case #SCN_MODIFIED
Debug "SCN_MODIFIED"
EndSelect
EndIf
EndSelect
EndProcedure
Define.Scintilla *Edit1, *Edit2 ; Objectvariable für Scintilla-Control definieren
Define.l *pdoc
#PB_Window_Flags = #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget
If OpenWindow(0, #PB_Ignore, 0, 640, 480, "SplitView", #PB_Window_Flags) = #False : End : EndIf
RemoveKeyboardShortcut(0, #PB_Shortcut_All) ; Ansonsten funktioniert TAB nicht!
If CreateGadgetList(WindowID(0))
*Edit1 = New_Scintilla(#Sci1, 0, 0, 0, 0, @SciCallback())
*Edit2 = New_Scintilla(#Sci2, 0, 0, 0, 0, @SciCallback())
*pdoc = *Edit1\SciMsg(#SCI_GETDOCPOINTER)
*Edit2\SciMsg(#SCI_SETDOCPOINTER, 0, *pDoc)
SplitterGadget(#Splitter, 0, 0, 640, 480, #Sci1, #Sci2)
SetGadgetState(#Splitter, 360)
SetActiveGadget(#Sci1)
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_SizeWindow
ResizeGadget(#Splitter, #PB_Ignore, #PB_Ignore, WindowWidth(0), WindowHeight(0))
EndSelect
ForEver
Scintilla_End() ; Endfunktion, wird später in der Lib nicht mehr gebraucht
Was heißt das mit dem Parentfenster, ist das nicht korrekt?hallodri hat geschrieben:Es handelt sich aber dabei um den Callback des Parentfenster.
Starte den Callback lieber ueber ein Prototyp , Das *Gadget.long
irritiert etwas.

Code: Alles auswählen
!EXTRN _PB_Object_GetOrAllocateID@8
!EXTRN _PB_Gadget_RegisterGadget@16
!EXTRN _PB_Gadget_Globals
!EXTRN _PB_Gadget_Objects
!MOV eax,[_PB_Gadget_Objects]
!MOV [p.v_ObjectList],eax
!MOV [p.v_GetOrAllocateID],dword _PB_Object_GetOrAllocateID@8
!MOV [p.v_RegisterGadget],dword _PB_Gadget_RegisterGadget@16
!MOV eax,[_PB_Gadget_Globals]
!MOV eax,[eax]
!MOV [p.v_parent],eaxDiese Lib befindet sich ja auch in Entwicklunggnozal hat geschrieben:Nice example, but who knows how long this ASM stuff is valid ?PB internals change all the time...Code: Alles auswählen
!EXTRN _PB_Object_GetOrAllocateID@8 !EXTRN _PB_Gadget_RegisterGadget@16 !EXTRN _PB_Gadget_Globals !EXTRN _PB_Gadget_Objects !MOV eax,[_PB_Gadget_Objects] !MOV [p.v_ObjectList],eax !MOV [p.v_GetOrAllocateID],dword _PB_Object_GetOrAllocateID@8 !MOV [p.v_RegisterGadget],dword _PB_Gadget_RegisterGadget@16 !MOV eax,[_PB_Gadget_Globals] !MOV eax,[eax] !MOV [p.v_parent],eax

Kommt darauf an was du machen moechtest , dieser Callback ist sehrts-soft hat geschrieben:Was heißt das mit dem Parentfenster, ist das nicht korrekt?hallodri hat geschrieben:Es handelt sich aber dabei um den Callback des Parentfenster.
Starte den Callback lieber ueber ein Prototyp , Das *Gadget.long
irritiert etwas.