home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / bp_6_93 / vbdos / control / register.asm < prev    next >
Assembly Source File  |  1993-01-05  |  13KB  |  276 lines

  1. ; ----------------------------------------------------------------------------
  2. ; REGISTER.ASM: Initialisierungs- und IsHandler-Routinen für
  3. ; benutzerdefinierte Steuerelemente.
  4. ;
  5. ; Initialisierungssegment und IsHandler-Routine wurden vom
  6. ; Schablonengenerator für benutzerdefinierte Steuerelemente 
  7. ; CUSTGEN.EXE erzeugt.
  8. ;
  9. ; CUSTGEN.EXE ist ein Dienstprogramm, das die Erstellung von 
  10. ; benutzerdefinierten Steuerelementen erleichtert. Es ermöglicht 
  11. ; Ihnen, die Ereignisse auszuwählen, auf die Ihr benutzerdefiniertes 
  12. ; Steuerelement reagieren soll, und dann erzeugt es entsprechende 
  13. ; Code-Schablonen und eine Registerroutine für diese Ereignisse.
  14. ;
  15. ; Ändern Sie die Code-Schablonendatei wie erforderlich und 
  16. ; erstellen Sie dann Ihr benutzerdefiniertes Steuerelement wie folgt:
  17. ;    ML -c <RegisterFile>          ; Geht von einem Masm 6.0-Übersetzer aus
  18. ;    BC /o <TemplateFile>;         ; Verwendet den für den Schablonen-
  19. ;                                  ; Quellcode geeigneten Übersetzer.
  20. ;    DEL <TemplateFile.LIB>        ; Löscht evtl. vorhandene Bibliothek.
  21. ;    LIB <TemplateFile.LIB>+<RegisterFile.OBJ>+<TemplateFile.OBJ>
  22. ;    LINK /Q <TemplateFile.LIB>,<TemplateFile.QLB>,,VBDOSQLB.LIB;
  23. ; Sie können mehrere benutzerdefinierte Steuerelemente zu einer 
  24. ; einzelnen Quick-Bibliothek für den Einsatz in der Programmierumgebung 
  25. ; wie folgt kombinieren:
  26. ;    DEL <CombinedLib.LIB>         ; Löscht evtl. vorhandene Bibliothek.
  27. ;    LIB <CombinedLib.LIB>+<Cust1.LIB>+<Cust2.LIB>+<CustN.LIB>
  28. ;    LINK /Q <CombinedLib.LIB>,<CombinedLib.QLB>,,VBDOSQLB.LIB;
  29. ; Um eine Alternate Math-Bibliothek für benutzerdefinierte Steuerelemente
  30. ; (statt der oben angegebenen Emulator Math-Bibliothek für
  31. ; TemplateFile-Prozedur mit der /FPa-Option. Anmerkung: eine Altmath-
  32. ; Bibliothek kann nicht zur Erstellung einer Quick-Bibliothek verwendet 
  33. ;  werden.
  34. ;
  35. ;
  36. ; Copyright (C) 1991-1992 Microsoft Corporation
  37. ; Sie haben das lizenzgebührfreie Recht, die mit Visual Basic 
  38. ; für MS-DOS gelieferten Beispielanwendungsdateien und 
  39. ; Werkzeugsammlungen (und/oder jede modifizierte Version) auf jede 
  40. ; Art und Weise, die Ihnen sinnvoll erscheint, zu benutzen, zu ändern, 
  41. ; zu vervielfältigen und zu verteilen unter der Bedingung, daß 
  42. ; Sie zustimmen, daß Microsoft keine Garantie, Verpflichtung oder Haftung 
  43. ; für irgendeine der Beispielanwendungsdateien oder Werkzeugsammlungen
  44. ; übernimmt.
  45. ; ----------------------------------------------------------------------------
  46.  
  47.  
  48. ; Speichermodell und Include-Dateien.
  49.  
  50. .MODEL    medium, basic
  51. INCLUDE   CUSTINCL.INC
  52. ; Far extern-Deklarationen für die Ereignisbehandlungsroutinen der 
  53. ; benutzerdefinierten Steuerelemente.
  54.  
  55. EXTRN   Uhr_CClick:FAR
  56. EXTRN   Uhr_CDblClick:FAR
  57. EXTRN   Uhr_CTimer:FAR
  58. EXTRN   Uhr_CLoad:FAR
  59. EXTRN   Uhr_CUnload:FAR
  60.  
  61.  
  62.    PUBLIC BCC$UHR                      ; Öffentliche Deklarationen zum 
  63.    BCC$UHR  EQU 5253H                  ; Einbinden des erforderlichen 
  64.                            ; Codes beim Verknüpfen der EXE-Datei. Muß aus 
  65.                            ; 'BCC$' plus der TypeID-Zeichenfolge bestehen, 
  66.                            ; sonst wird der Code mit dem Programm nicht 
  67.                            ; verknüpft.
  68.  
  69.  
  70. ; Initialisierungssegment für benutzerdefinierte Steuerelemente
  71. ;
  72. ; Beachten Sie: Dieses Segment kann Initialisierungsinformationen für 
  73. ; mehrere benutzerdefinierte Steuerelemente enthalten. Geben Sie 
  74. ; hierzu einfach die erforderlichen Informationen in der richtigen
  75. ; Reihenfolge für jedes benutzerdefinierte Steuerelement an.
  76.  
  77. DGROUP GROUP XECIB, XECI, XECIE
  78.  
  79. XECIB  SEGMENT WORD PUBLIC 'DATA'  ; Beginn des Initialisierungssegments
  80. XECIB  ENDS
  81.  
  82. XECI   SEGMENT WORD PUBLIC 'DATA'
  83.    DW OFFSET UhrType         ; ID-Zeichenfolge für 
  84.                            ; benutzerdefiniertes Steuerelement. Muß
  85.                            ; alphanumerisch sein und mit einem
  86.                            ; alphabetischen Zeichen beginnen. Near-Zeiger
  87.                            ; auf nullterminierte Zeichenfolge in
  88.                            ; Datensegment.
  89.    DW lenUhrType     ; Länge der Zeichenfolge (ausgehende 
  90.                            ; Null nicht eingeschlossen, Max = 25)
  91.    DD UhrIsHandler           ; Far-Zeiger auf IsHandler.
  92.    DW 0                    ; Attribut (0,1) legt fest, ob Steuerelement 
  93.                            ; ein umgebendes Objekt sein kann.
  94.  
  95.    BeginEventMasks         ; Ereignismasken
  96.       MaskItem EVENT_Click
  97.       MaskItem EVENT_Custom
  98.       MaskItem EVENT_DblClick
  99.       MaskItem EVENT_DragDrop
  100.       MaskItem EVENT_DragOver
  101.       MaskItem EVENT_DropDown
  102.       MaskItem EVENT_GotFocus
  103.       MaskItem EVENT_KeyDown
  104.       MaskItem EVENT_KeyPress
  105.       MaskItem EVENT_KeyUp
  106.       MaskItem EVENT_LostFocus
  107.       MaskItem EVENT_MouseDown
  108.       MaskItem EVENT_MouseMove
  109.       MaskItem EVENT_MouseUp
  110.       MaskItem EVENT_Paint
  111.       MaskItem EVENT_PathChange
  112.       MaskItem EVENT_PatternChange
  113.       MaskItem EVENT_Resize
  114.       MaskItem EVENT_Timer
  115.       MaskItem EVENT_Unload
  116.       MaskItem EVENT_Load
  117.    EndEventMasks
  118.    BeginPropertyMasks      ; Eigenschaftsmasken
  119.       MaskItem PROP_Action
  120.       MaskItem PROP_Alignment
  121.       MaskItem PROP_Archive
  122.       MaskItem PROP_AutoRedraw
  123.       MaskItem PROP_Caption
  124.       MaskItem PROP_Checked
  125.       MaskItem PROP_DragMode
  126.       MaskItem PROP_Column
  127.       MaskItem PROP_Drive
  128.       MaskItem PROP_Enabled
  129.       MaskItem PROP_Filename
  130.       MaskItem PROP_Hidden
  131.       MaskItem PROP_LargeChange
  132.       MaskItem PROP_Left
  133.       MaskItem PROP_ListCount
  134.       MaskItem PROP_ListIndex
  135.       MaskItem PROP_Max
  136.       MaskItem PROP_Min
  137.       MaskItem PROP_Mode
  138.       MaskItem PROP_MousePointer
  139.       MaskItem PROP_MultiLine
  140.       MaskItem PROP_Normal
  141.       MaskItem PROP_Path
  142.       MaskItem PROP_Pattern
  143.       MaskItem PROP_ReadOnly
  144.       MaskItem PROP_Row
  145.       MaskItem PROP_ScrollBars
  146.       MaskItem PROP_SelLength
  147.       MaskItem PROP_SelStart
  148.       MaskItem PROP_SelText
  149.       MaskItem PROP_SmallChange
  150.       MaskItem PROP_Sorted
  151.       MaskItem PROP_Style
  152.       MaskItem PROP_System
  153.       MaskItem PROP_TabIndex
  154.       MaskItem PROP_TabStop
  155.       MaskItem PROP_Tag
  156.       MaskItem PROP_Text
  157.       MaskItem PROP_Top
  158.       MaskItem PROP_Value
  159.    EndPropertyMasks
  160. XECI   ENDS
  161.  
  162. XECIE  SEGMENT WORD PUBLIC 'DATA'  ; Ende des Initialisierungssegments.
  163. XECIE  ENDS
  164.  
  165.  
  166. .DATA
  167.  
  168.    UhrType DB    "Uhr",0h        ; TypeID-Zeichenfolge für benutzerdefinierte 
  169.                            ; Steuerelemente. Muß alphanumerisch sein und 
  170.                            ; mit einem alphabetischen Zeichen beginnen.
  171.    lenUhrType = $ - UhrType - 1  ; Länge der Zeichenfolge 
  172.                            ; (ausgehende Null nicht eingeschlossen, 
  173.                            ; Max = 25)
  174.  
  175.  
  176. .CODE   Uhr_TEXT
  177.  
  178.    ; Behandlungsroutinen-Adressentabelle für benutzerdefinierte
  179.    ; Steuerelemente. Zur Verwendung mit einer tabellengesteuerten 
  180.    ; IsHandler-Routine. Die Tabelle enthält die Adresse der
  181.    ; Ereignisbehandlungsroutine für Ereignisse, die durch das 
  182.    ; benutzerdefinierte Steuerelement aufgefangen oder verarbeitet 
  183.    ; werden. Die Tabelle enthält ein Long 0 für Ereignisse, die vom
  184.    ; benutzerdefinierten Steuerelement nicht aufgefangen oder 
  185.    ; verarbeitet, sondern falls zutreffend direkt an den Benutzercode
  186.    ; übergeben werden.
  187.  
  188.    UhrTable LABEL DWORD
  189.         DD    0                                             ; Skipped table entry: DO NOT REMOVE
  190.         DD    Uhr_CClick                                    ;Click
  191.         DD    0                                             ; Skipped table entry: DO NOT REMOVE
  192.         DD    Uhr_CDblClick                                 ;DblClick
  193.         DD    0                                             ;DragDrop
  194.         DD    0                                             ;DragOver
  195.         DD    0                                             ; Skipped table entry: DO NOT REMOVE
  196.         DD    0                                             ;GotFocus
  197.         DD    0                                             ;KeyDown
  198.         DD    0                                             ;KeyPress
  199.         DD    0                                             ;KeyUp
  200.         DD    0                                             ; Skipped table entry: DO NOT REMOVE
  201.         DD    0                                             ;LostFocus
  202.         DD    0                                             ;MouseDown
  203.         DD    0                                             ;MouseMove
  204.         DD    0                                             ;MouseUp
  205.         DD    0                                             ;Paint
  206.         DD    0                                             ; Skipped table entry: DO NOT REMOVE
  207.         DD    0                                             ; Skipped table entry: DO NOT REMOVE
  208.         DD    0                                             ; Skipped table entry: DO NOT REMOVE
  209.         DD    Uhr_CTimer                                    ;Timer
  210.         DD    0                                             ; Skipped table entry: DO NOT REMOVE
  211.         DD    Uhr_CLoad                                     ;Load
  212.         DD    0                                             ;IntegerGet
  213.         DD    0                                             ;IntegerSet
  214.         DD    0                                             ;LongGet
  215.         DD    0                                             ;LongSet
  216.         DD    0                                             ;StringGet
  217.         DD    0                                             ;StringSet
  218.         DD    Uhr_CUnload                                   ;Unload
  219.         DD    0                                             ;MthAddItem
  220.         DD    0                                             ;MthCls
  221.         DD    0                                             ;MthHide
  222.         DD    0                                             ;MthMove
  223.         DD    0                                             ;MthPrint
  224.         DD    0                                             ; Skipped table entry: DO NOT REMOVE
  225.         DD    0                                             ;MthRefresh
  226.         DD    0                                             ;MthRemoveItem
  227.         DD    0                                             ;MthSetFocus
  228.         DD    0                                             ;MthShow
  229.         DD    0                                             ; Skipped table entry: DO NOT REMOVE
  230.         DD    0                                             ; Skipped table entry: DO NOT REMOVE
  231.         DD    0                                             ;MthDrag
  232.  
  233.     lenUhrTable = ($ - UhrTable)/4    ; Number of entries in table
  234.  
  235.  
  236.    ; IsHandler-Routine für das benutzerdefinierte Steuerelement. 
  237.    ; Visual Basic ruft diese Routine bei jedem Auftreten eines 
  238.    ; für das benutzerdefinierte Steuerelement bestimmten Ereignisses 
  239.    ; auf. Der Ereignisbezeichner (EventID) des Ereignisses wird 
  240.    ; an die IsHandler-Routine übergeben, welche die Adresse der
  241.    ; Ereignisbehandlungsroutine des benutzerdefinierten Steuerelements 
  242.    ; für das jeweilige Ereignis liefert. Falls das benutzerdefinierte 
  243.    ; Steuerelement nicht in der Lage ist, das Ereignis aufzufangen bzw. 
  244.    ; zu verarbeiten, liefert IsHandler ein Long 0 und das Ereignis wird 
  245.    ; falls zutreffend an den Code des Benutzers übergeben.
  246.    ; 
  247.    ; Diese IsHandler-Routine verwendet eine tabellengesteuerte Technik 
  248.    ; zum Liefern der Adresse einer Ereignisbehandlungsroutine oder 0 
  249.    ; (die Tabellendefinition ist oben angegeben) Es können jedoch auch 
  250.    ; andere Methoden zum hierzu verwendet werden.
  251.  
  252.     PUBLIC   UhrIsHandler
  253.    UhrIsHandler PROC , EventId:WORD
  254.  
  255.       MOV    bx, EventId                ;[bx] = event Id
  256.       CMP    bx, lenUhrTable   ; Ist Wert im zulässigen Bereich?
  257.       JAE    OutOfRange                ;Bricht ab und liefert 0:0
  258.       ADD    bx, bx
  259.       ADD    bx, bx                    ;[bx] = dword-Index
  260.       LES    ax, UhrTable[bx-4]   ;[es:ax] = Adresse der 
  261.                                                ; Behandlungsroutine
  262.       MOV    dx, es                    ;[dx:ax] = Adresse der 
  263.                                        ; Behandlungsroutine / 0
  264.       RET
  265.  
  266. OutOfRange:
  267.       XOR    ax, ax
  268.       CWD
  269.       RET
  270.  
  271.    UhrIsHandler ENDP
  272.  
  273. END
  274.  
  275.