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 WM_SYSCOMMAND: Probleme mit SC_SIZE (https://www.delphipraxis.net/105188-wm_syscommand-probleme-mit-sc_size.html)

AScomp 17. Dez 2007 18:25


WM_SYSCOMMAND: Probleme mit SC_SIZE
 
Hallo,

habe ein Formular mit BorderStyle := bsNone erstellt. Dieses möchte ich aber trotzdem resizeable machen. Hierfür habe ich leere Images an die Ränder geklebt, die einen Resize-Cursor haben. Im OnMouseDown-Event habe ich folg. Code:

if Button = mbleft then begin
ReleaseCapture;
FormInstant.Perform(WM_SYSCOMMAND, $F008, 0);
end;

Jetzt gibt es aber folg. Problem: Das Fenster lässt sich nur rechts sowie unten vergrößern. Versuche ich es links und oben, passiert nichts. Interessanterweise kann ich links und oben allerdings das Fenster vergrößern, indem ich die Mouse nach rechts oder unten bewege. Allerdings wird das Fenster dann wieder rechts bzw. unten vergrößert, nicht links bzw. oben.

Kann noch jemand folgen? :D

Kurz gesagt: derzeit sind wohl nur zwei Richtungen möglich (nach rechts und nach unten). Ggf. muss ich SC_SIZE ($F008) auch anders aufrufen, um die korrekte Vergrößerung links und oben zu erhalten. Wenn ja: wie? ;-)

Danke für alle Tipps!

AScomp 17. Dez 2007 18:31

Re: WM_SYSCOMMAND: Probleme mit SC_SIZE
 
Problem gelöst! :D

Delphi-Quellcode:
     
if Button = mbleft then begin
   ReleaseCapture;
   FormInstant.Perform(WM_SYSCOMMAND, SC_SIZE or WMSZ_BOTTOMRIGHT, 0);
end;
WMSZ_BOTTOMRIGHT etc. durch die entsprechenden Richtungen ersetzen... Steht weder in der MSDN, noch hab ich sonst irgendwas dazu gefunden. Per Zufall nach inzwischen 45 Minuten googeln gefunden. :-/

DeddyH 17. Dez 2007 18:35

Re: WM_SYSCOMMAND: Probleme mit SC_SIZE
 
Hi,

schön, dass Du Dir selbst helfen konntest :thumb:
Tust Du uns trotzdem 2 Gefallen?
1. Setze bitte Delphi-Tags (Beitrag editieren, Quellcode markieren und auf den "Delphi-Code"-Button klicken)
2. Ersetze bitte die Zeile
Delphi-Quellcode:
SC_SIZE + WMSZ_BOTTOMRIGHT
durch
Delphi-Quellcode:
SC_SIZE or WMSZ_BOTTOMRIGHT
Bei Bitverknüpfungen mit + wird mir immer ganz übel ;)

AScomp 17. Dez 2007 18:38

Re: WM_SYSCOMMAND: Probleme mit SC_SIZE
 
Hehe sorry, hatte vorher noch mit SC_SIZE + 1 etc. rumgespielt und jetzt gar nicht bemerkt, dass das + noch nicht durch or ersetzt wurde. Danke für den Hinweis!

Tags sind jetzt auch dran. :-)

bitsetter 17. Dez 2007 19:22

Re: WM_SYSCOMMAND: Probleme mit SC_SIZE
 
Zitat:

Zitat von AScomp
Hallo,

habe ein Formular mit BorderStyle := bsNone erstellt. Dieses möchte ich aber trotzdem resizeable machen. Hierfür habe ich leere Images an die Ränder geklebt, die einen Resize-Cursor haben. Im OnMouseDown-Event habe ich folg. Code:

Hallo,

das wäre wohl auch ohne angeklebte Images gegangen:
Form die „BorderStyle := bsNone“ ist, in der Größe ändern?

AScomp 17. Dez 2007 23:31

Re: WM_SYSCOMMAND: Probleme mit SC_SIZE
 
Hallo,

nein, unter Vista gab's zumindest bei mir IMMER den Fensterrahmen. Darum die manuelle Implementation.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 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