Seltsame Zuweisung



  • Ich habe hier eine simple SDI Anwendung und finde dort in PreCreateWindows folgende Zeile:

    cs.dwExStyle &= ~WS_EX_CLIENTEDGE;

    was ist das??? Was wird hier mit dem Style für die Klientkante gemacht(Isser doch oder?)?
    Zum einen Verstehe ich nicht das &= und auch die tilde ~ vor dem WS wundert mich. Was hat das zu bedeuten. Und zuletzt, was ist genau cs bzw. dwExStyle?
    In der MSDN steht das nur in englisch und ich verstehe das leider nicht 😞

    thx & cu



  • cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
    das selbe wie:
    dwExStyle = dwExStyle AND NOT (bitweise) WS_EX_CLIENTEDGE

    Macht nix anderes als WS_EX_CLIENTEDGE aus dwExStyle zu löschen.
    dwExStyle ist der extended window style, also eine ansammlung von style-flags und jetzt wird auch die zeile oben hoffentlich klar.
    zb:
    WS_EX_CLIENTEDGE ist 0010
    in dwExStyle steht gerade 1010
    Um WS_EX_CLIENTEDGE raus zu löschen macht man ein NOT von WS_EX_CLIENTEDGE, das dann 1101 ist, dann kommt ein AND mit dwExStyle -> 1010 AND 1101 = 1000



  • Naja vorausgesetzt das Bunti etwas von Bitoperationen versteht, dürfte es jetzt klarer sein 😉 Falls nicht, merkst du dir einfach das du so flags (eine Option) setzen kannst:

    nFlags = nFlags | FLAG

    und so wieder löschen

    nFlags = nFlags & ~FLAGS

    oder du arbeitest dich in die schöne Welt der Bitoperatoren ein.



  • ahhh. Bitoperationen kenne ich noch aus der digitaltechnik 🙂
    danke für die information, jetzt leuchtet das ganze ein!!!

    EDIT: Da wäre noch etwas 😉
    Wenn ich mit dem Assistenten eine SDI-Anwendung (ohne doc/view support) erstellt der ein child-window das auf die ganze fläche verteilt ist. erstelle ich eine eigene klasse mit exakt dem selben inhalt wie die child-klasse vom assistenten, wird mein fenster dagegen nicht angezeigt bzw. mit anderen koordinaten als 0,0,0,0 wird es halt angezeigt und je nachdem was in precreatewindow steht mit caption, anderer farbe (zum prüfen) usw.
    mir scheint als nehme das (alleine die koordinaten 0,0,0,0 sagen ja schon viel) child das vom assistenten erstellt wird eine sonderstellung ein weil es eben immer das ganze mainframe füllt. wie wird das gemacht?? meien vermutung war das der parameter AFX_WS_DEFAULT_VIEW etwas zu tun hat. ein anderer, auch mir unklarer parameter ist AFX_IDW_PANE_FIRST. hat der bzw. haben die etwas mit dieser sache zu tun, oder ist das was ganz anderes?? danke für eure hilfe!!! 🙂

    gruß
    bunti


Log in to reply