"|" 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 daachso, du hast das and auf die frage bezogen, wie das ganze ausgewertet wird. Jetzt verstehe ich das.