Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Bereichsüberprüfung AdjustWindowRect BorderStyle bsDialog (https://www.delphipraxis.net/185597-bereichsueberpruefung-adjustwindowrect-borderstyle-bsdialog.html)

TUX_der_Pinguin 23. Jun 2015 11:52

Bereichsüberprüfung AdjustWindowRect BorderStyle bsDialog
 
Hallo DPler,

ich wollte mit Hilfe einer Anleitung (http://www.delphifeeds.com/go/s/67441) die Titlezeile eines Fensters manipulieren. Soweit funktioniert auch alles
jedoch wenn ich die Eigenschaft BorderStyle des Fensters auf bsDialog stelle erhalte ich eine Bereichsüberprüfungsmeldung.

Delphi-Quellcode:
procedure TfrmMenue.FormCreate(Sender: TObject);
var
  R: TRect;

begin

  if DwmCompositionEnabled then begin
    //init
    SetRectEmpty(R);

    AdjustWindowRect(R, GetWindowLong(Handle, GWL_STYLE), False);

    FWndFrameSize := R.Right;
    GlassFrame.Top := -R.Top;
    GlassFrame.Enabled := True;
    SetWindowPos(Handle, 0, Left, Top, Width, Height, SWP_FRAMECHANGED);
    DoubleBuffered := True;

    //Höhe und Position der Groupbox anpassen
    grbMenue.Top := GetSystemMetrics(SM_CYEDGE)+GetSystemMetrics(SM_CYCAPTION)+8;
    grbMenue.Height := ClientHeight - grbMenue.Top - GetSystemMetrics(SM_CYEDGE)-StatusBar1.Height;
  end;{if}

end;
Das Problem ist das GetWindowLong() im Falle von bsDialog einen negativen Wert ausgibt die Prozedur AdjustWindowRect jedoch nur positive (Cardinal) Werte akzeptiert. :gruebel:

Ich bin gerade etwas ratlos was ich tun muss das ich die Eigenschaft 'bsDialog' einstellen kann, ohne eine Fehlermeldung.

TiGü 23. Jun 2015 13:18

AW: Bereichsüberprüfung AdjustWindowRect BorderStyle bsDialog
 
Probiere mal testhalber die Funktion GetWindowLongPtr.

TUX_der_Pinguin 23. Jun 2015 13:33

AW: Bereichsüberprüfung AdjustWindowRect BorderStyle bsDialog
 
Zitat:

Zitat von TiGü (Beitrag 1306263)
Probiere mal testhalber die Funktion GetWindowLongPtr.

GetWindowLongPtr(Handle, GWL_STYLE) gibt bei bsDialog auch einen negativen Wert aus (-2033713152).


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz