"|" z.B beim Style Parameter



  • Hallo,

    durch ein "|" kann man ja z.B bei der CreateWindow Funktion verschiedene Styles als Parameter übergeben, doch wie wird dieser Parameter intern gehandelt ?

    Die Verschiedenen Styles sind doch Konstanten, hinter denen eine Zahl steckt, ud diese Zahlen werden doch mit einem binären Oder "zusammengefügt".

    Wie Filtert diese Funktion dann diese Übergeben Styles heraus ?

    Was ich nicht verstehe ist folgendes :

    angenommen, man übergibt der Funktion die Werte 5 (101) und 2 (010), dann werden diese doch durch das binäre Oder zu 7 (111).

    Allerdings wird doch 6 und 1 ebenfalls zu 7, genauso 7 und 5.

    Wie filtert die Funktion die übergebenen Parameter heraus ?

    Oder liege ich völlig falsch damit, dass die Werte durch Bitoperatoren zusammen gefügt werden ?



  • Durch ein AND, wie du ja schon vermutet hast. Der einzige 'tick' ist, dass immer nur ein bit 1 ist.
    bsp:

    #define WS_POPUP            0x80000000L // 1000 0000 ...
    #define WS_CHILD            0x40000000L // 0100 0000 ...
    #define WS_MINIMIZE         0x20000000L // 0010 0000 ...
    #define WS_VISIBLE          0x10000000L // 0001 0000 ...
    #define WS_DISABLED         0x08000000L // 0000 1000 ...
    #define WS_CLIPSIBLINGS     0x04000000L // 0000 0100 ...
    #define WS_CLIPCHILDREN     0x02000000L // 0000 0010 ...
    #define WS_MAXIMIZE         0x01000000L // 0000 0001 ...
    


  • Achso, ist ja ziemlich genial, aber irgendwie doch einfach ^^
    Bedeutet | nicht or sondern and ?



  • imson schrieb:

    Achso, ist ja ziemlich genial, aber irgendwie doch einfach ^^
    Bedeutet | nicht or sondern and ?

    Das meinst Du doch nicht ernst, oder?

    Schau Dir doch mal die von CMat geposteten defines an... evtl. fällt Dir auf, das immer nur 1 bit gesetzt ist...

    Was käme wohl raus wenn man WS_POPUP und WS_CHILD per AND verknüpfen würde?



  • | ist eine bitweises or



  • hm, jo leichtsinnsfehler, hat mich wohl verwirrt, dass CMatt was von And geschrieben hat^^

    der zerstreute Professor eben 🤡



  • bsp:

    WS_POPUP | WS_CHILD = 1000 OR 0100 = 1100

    ist WS_POPUP in 1100 drinnen?
    1100 & WS_POPUP = 1100 AND 1000 = 1000 -> jep da
    st WS_VISIBLE in 1100 drinnen?
    1100 & WS_VISIBLE = 1100 AND 0001 = 0000 -> nö, net da



  • CMatt schrieb:

    bsp:

    WS_POPUP | WS_CHILD = 1000 OR 0100 = 1100

    ist WS_POPUP in 1100 drinnen?
    1100 & WS_POPUP = 1100 AND 1000 = 1000 -> jep da
    st WS_VISIBLE in 1100 drinnen?
    1100 & WS_VISIBLE = 1100 AND 0001 = 0000 -> nö, net da

    achso, du hast das and auf die frage bezogen, wie das ganze ausgewertet wird. Jetzt verstehe ich das.


Anmelden zum Antworten