Seite 2 von 2

Verfasst: 22.10.2006 16:58
von ts-soft
>> Da alle Tab-Shortcuts ausgeschalten werden, muss ich dann fuer jedes Gadget das Tab-Handling einbauen, oder?

Ja, aber wenn Du schon EasyVent einbindest, kannste alle damit machen,
haste keine Probleme mehr. Ich verwende es auch in einigen Projekten,
erspart viel Arbeit.

PS: das Tab-Handling kannste in eine Procedure packen, schau Dir die
PB_Gadget Structure an :wink:

Verfasst: 22.10.2006 17:04
von Tafkadasom2k5
Würde sowas nicht auch per Subclassing gehen?
Ich habe jetzt gerade kein Purebasoc-Beispiel zur Hand, aber normalerweise dürfte man übers Subclassing doch auch Events wie "Tab" abfangen können..?

Gr33tz
Tafkadasom2k5

Verfasst: 22.10.2006 17:12
von ts-soft
Tafkadasom2k5 hat geschrieben:Würde sowas nicht auch per Subclassing gehen?
Ich habe jetzt gerade kein Purebasoc-Beispiel zur Hand, aber normalerweise dürfte man übers Subclassing doch auch Events wie "Tab" abfangen können..?

Gr33tz
Tafkadasom2k5
Würde auch gehen, aber EasyVent macht das selbständig über
SuperClassing. Man muß nicht soviel im MSDN wühlen :mrgreen:

Verfasst: 23.10.2006 14:39
von edel
ts-soft hat geschrieben:
Tafkadasom2k5 hat geschrieben:Würde sowas nicht auch per Subclassing gehen?
Ich habe jetzt gerade kein Purebasoc-Beispiel zur Hand, aber normalerweise dürfte man übers Subclassing doch auch Events wie "Tab" abfangen können..?

Gr33tz
Tafkadasom2k5
Würde auch gehen, aber EasyVent macht das selbständig über
SuperClassing. Man muß nicht soviel im MSDN wühlen :mrgreen:
Kann ich nicht so stehen lassen :D. Hier wird kein Superclassing benutzt,
sondern Subclassing. Sollte somit die Frage von Tafka auch beantworten.

Verfasst: 23.10.2006 14:42
von Tafkadasom2k5
edel hat geschrieben: Kann ich nicht so stehen lassen :D. Hier wird kein Superclassing benutzt,
sondern Subclassing.
@TS-Soft:
Bild :mrgreen:

Verfasst: 23.10.2006 19:59
von ts-soft
In der Anleitung von EasyVent stehts so. Ich nutze es als UserLib, hab also
den Source nicht ständig vor Augen.

@Tafkadasom2k5
Die kleine Rotznase mit ausgestreckter Zunge, bist Du das :lol:

Verfasst: 23.10.2006 20:14
von Kaeru Gaman
der is ja echt voll knuffig, was ein Lausbub. :D

...ist das dein junge?

Verfasst: 24.10.2006 09:29
von Tafkadasom2k5
...ne, kenn ich nicht... ;)
Aber ich habe ihn gesehen und fand ihn niedlich :mrgreen:

Gr33tz
Tafkadasom2k5

Edit: Ne, mit eigenen Lausbubs warte ich wohl noch <)

Verfasst: 24.10.2006 15:26
von edel
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 :lol:

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.