ts-soft hat geschrieben:In der Anleitung von EasyVent stehts so. Ich nutze es als UserLib, hab also
den Source nicht ständig vor Augen.
Weder im Source noch in der Anleitung steht etwas ueber Klassenableitung,
geschweige denn 'superclassing'. Was das mit der Lib zu tun hat weiss ich nicht , klingt aber nach einer Ausrede
Hier mal 2 Beispiele :
subclassing :
Code: Alles auswählen
Procedure Callback(h,m,w,p)
shared oldProc
If m = #WM_CHAR
select w
case 48 to 57 , 8 ; 0-9 + backspace
default
ProcedureReturn 0
EndSelect
EndIf
ProcedureReturn CallWindowProc_(oldProc,h,m,w,p)
EndProcedure
hwnd = OpenWindow(0,0,0,200,200,"")
hedit = CreateWindowEx_(0,"edit","0123456789",#WS_CHILD|#WS_VISIBLE,10,10,180,20,hwnd,0,0,0)
oldProc = SetWindowLong_(hedit,#GWL_WNDPROC,@callback()) ;<- subclassing
Repeat
Until WaitWindowEvent() = 16
superclassing
Code: Alles auswählen
Procedure Callback(h,m,w,p)
shared oldProc
If m = #WM_CHAR
select w
case 48 to 57 , 8 ; 0-9 + backspace
default
ProcedureReturn 0
EndSelect
EndIf
ProcedureReturn CallWindowProc_(oldProc,h,m,w,p) ; alte adresse aufrufen
EndProcedure
Procedure RegisterMyCLass()
shared oldProc
Protected wndex.WNDCLASSEX\cbSize = sizeof(WNDCLASSEX)
Protected hInstance = GetModuleHandle_(0)
GetClassInfoEx_(0,"edit",@wndex) ; info ueber 'edit' holen
oldproc = wndex\lpfnWndProc ; alte adresse speichern
wndex\lpszClassName = @"MyWinClass" ; unseren Klassen namen eintragen
wndex\hInstance = hInstance
wndex\lpfnWndProc = @Callback() ; unsere procedure angeben
RegisterClassEx_(@wndex)
EndProcedure
RegisterMyCLass() ; superclassing
hwnd = OpenWindow(0,0,0,200,200,"")
hedit = CreateWindowEx_(0,"MyWinClass","0123456789",#WS_CHILD|#WS_VISIBLE,10,10,180,20,hwnd,0,0,0)
Repeat
Until WaitWindowEvent() = 16
Wuerde in EasyEvent also gar keinen Sinn machen.