Also bei allen Respekt, Fensterstile habe ich bisher unter Delphi
immer mit
and not gelöscht und ich hatte nie Probleme. Und das es so auch richtig ist zeigt folgendes Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Dummy: DWORD;
begin
Dummy := WS_POPUP;
Showmessage(IntToStr(dummy));
Dummy := WS_POPUP or WS_CAPTION;
Showmessage(IntToStr(dummy));
Dummy := dummy xor WS_CAPTION;
Showmessage(IntToStr(dummy));
end;
Zum Schluss hat
dummy wieder den ursprünglichen Wert. Mit xor mag es auch gehen, aber üblicherweise löscht man in Delphi mit and not ein Bit.
Man muss nur beachten, dass man wenn die Flags schon gesetzt sind, dass man sie sich vorher mit
GetWindowLong holt und dann bei
Setwindowlong einsetzt und dann das Flag mit
and not entfernt.