質問

このは、PLT-スキームラッパー・ライブラリーの一部であります:

(define InputMask

  (_bitmask '(NoEventMask =            #x00000000

            KeyPressMask =             #x00000001

            KeyReleaseMask =           #x00000002

            ...

            OwnerGrabButtonMask =      #x01000000)

      _long))

の事は、私が(そのことについてまたは列挙型)ビットマスク内のフィールドにアクセスする方法を見つけ出すカントです。どのように私は、例えばKeyPressMask値を得ることができますか?

役に立ちましたか?

解決

あなたにはありません。新しいCTYPEを作るために、あなたは上構築するために既存のctypeを提供する必要があり、そして二つの機能 - 1既存のタイプにかかわらず、および他の方法を翻訳する1翻訳するために、

:ctypesのを追加するのは簡単です。 それは_bitmaskに基づいています(しかし、あなたの場合には、それは_int上だ)、および2つの変換関数は、整数にシンボルのリストを翻訳し、シンボルのリストに整数 -

さて、_longタイプだけではありません。そのようなタイプが使用されたら、KeyPressMaskの価値を知っている必要はありません - あなただけが外部関数に'(KeyPressMask)入力としてInputMaskを渡すことができることを知って、それが適切な数に変換されます。そしてまた、あなたがInputMask出力を持つ関数から結果値を得るとき、それはKeyPressMaskが含まれている可能性があるシンボルのリストになることを知っています。一番下の行は、Schemeの側にあなたが数字に対処していないということである - 。唯一のシンボルリストを

は、をした場合は、あなたが他のいくつかの方法であなた自身のctypeを構築することができ、いくつかのあいまいな理由で、これらの値にアクセスする必要があります - make-ctypeを使用して(私は上記で概説したように)非常に簡単なはずです<。 / P>

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top