Frage

Dies ist ein Teil einer PLT-Schema Wrapper-Bibliothek:

(define InputMask

  (_bitmask '(NoEventMask =            #x00000000

            KeyPressMask =             #x00000001

            KeyReleaseMask =           #x00000002

            ...

            OwnerGrabButtonMask =      #x01000000)

      _long))

Die Sache ist, ich kann nicht herausfinden, wie Felder für den Zugriff auf in einer Bitmaske (oder Enum für diese Angelegenheit). Wie kann ich KeyPressMask Wert zum Beispiel bekommen?

War es hilfreich?

Lösung

Sie dies nicht tun. Hinzufügen ctypes ist einfach:., Um eine neue ctype zu machen, benötigen Sie einen vorhandenen ctype zu schaffen, auf zu bauen, und zwei Funktionen - zu übersetzen, was auf den vorhandenen Typen, und eine die andere Art und Weise zu übersetzen

Nun hat der _bitmask Typ genau das - es auf _int baut (aber in Ihrem Fall, es ist auf _long), und die beiden Funktionen Übersetzung eine Liste von Symbolen auf eine ganze Zahl übersetzen, und eine ganze Zahl auf eine Liste von Symbolen . Sobald ein solcher Typ verwendet wird, brauchen Sie nicht den Wert von KeyPressMask kennen - Sie wissen nur, dass Sie '(KeyPressMask) als InputMask Eingabe in die Fremd Funktion übergeben können, und das wird an die entsprechende Nummer übersetzt werden; und Sie wissen auch, dass, wenn Sie den Ergebniswert aus einer Funktion erhalten, die einen InputMask Ausgang hat, dann wird es eine Liste von Symbolen, die KeyPressMask enthalten könnten. Unterm Strich ist, dass auf der Seite Schema Sie nicht mit Zahlen umgehen können -. Nur mit Symbollisten

Wenn Sie tun müssen diese Werte aus unerfindlichen Gründen zugreifen, dann können Sie Ihre eigenen ctype auf andere Weise bauen - mit make-ctype (wie ich oben beschrieben) sollte sehr einfach sein <. / p>

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top