Frage zu SetWindowLong()



  • Ich hatte vor, meinem Fenster ein neuen WindowStyle zu übergeben und bin dann auf die Funktion SetWindowLong() gestoßen.
    Allerdings habe ich keine Ahnung, wie ich die anzuwenden habe. In der MSDN habe ich schon nachgesehen, aber mit dieser Funktion komme ich einfach nicht klar.
    Ich hoffe, ihr könnt mir die Funktionsweise etwas erklären.



  • Womit genau kommst du nicht klar?

    Um den Stil zu verändern, übergibt GWL_STYLE als zweiten Parameter.
    Außerdem solltest du SetWindowLongPtr nehmen, damit der Code sowohl unter 32 also auch unter 64 Bit-Versionen kompilert und fehlerfrei ausgeführt werden kann.
    Du kannst auch erst mit GetWindowLongPtr den Stil in Erfahrung bringen, Flags löschen und andere setzen, und dann SetWindowLongPtr mit dem verädnerten Maskenfeld aufrufen.

    LONG_PTR style = GetWindowLongPtr(/*Handle*/, GWL_STYLE);
    style &= ~WS_OVERLAPPEDWINDOW; // Beispielsweise dieses Flag löschen
    style |= WS_POPUP; // setzen
    SetWindowLongPtr(/*Handle*/, GWL_STYLE, style);
    


  • Danke, jetzt hab ich's verstanden.
    Zeile 3 und 4 deines Codes haben mir weitergeholfen!


Anmelden zum Antworten