Seite 1 von 1

Fenstern erweiterte Styles zuweisen

Verfasst: 06.03.2006 16:57
von hardfalcon
Hallo, falls ihr euch schon mal drüber geärgert habt, dass ihr bei den Flags von OpenWindow() nur einfache Styles zuweisen könnt (also nur solche ohne "EX" im Konstantennamen), dann hab ich hier die Lösung für euer Problem:

Code: Alles auswählen

;Wir erstellen ein ganz normales Fenster mit den Maßen 200x500 (90-60-90 wäre auch gegangen, aber das sieht man nicht so gut bei einer Auflösung von 1280x1024 ;-)
OpenWindow(0,0,0,200,500,#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_SystemMenu,"Toolbox")

;Hier ist der Trick: Mittels SetWindowLong_() weisen wir dem Fenster die erweiterten Styles zu. Das hier
; #GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|
;kann man auch weglassen, dann werden bestehende Flags jedoch
;automatisch gelöscht, sofern sie nicht bei den Flags von
;SetWindowLong_() angegeben sind.
SetWindowLong_(WindowID(0),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|#WS_EX_TOOLWINDOW)

;Damit das Fenster auch sofort richtig angezeigt wird, gaukeln wir dem Fenster vor, es wäre bewegt worden, indem wir das entsprechende Event auslösen. Wenn man diese Zeile weglässt, muss man das Fenster erst einmal mit der Maus bewegen, damit es richtig gezeichnet wird (am allerwichtigsten ist hier das Flag #SWP_FRAMECHANGED)
SetWindowPos_(WindowID(0),0,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE|#SWP_NOZORDER|#SWP_FRAMECHANGED) 

;Und die Eventschleife...
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Viel Spaß beim experimentieren, und nebenbei gleich mal eine Frage an das PB-Team: warum benutzt ihr eigentlich CreateWindow_() anstatt von CreateWindowEx_() ? :?

so long...
Pascal

Verfasst: 06.03.2006 18:58
von AND51
90-60-90... Ich schmeiß mich (fast) weg...

Der Trick ist ja ziemlich geil... Gibts noch andere Sachen in der Art?

Verfasst: 06.03.2006 19:25
von hardfalcon
Naja, du kannst halt anstelle von #WS_EX_TOOLWINDOW auch jede andere WindowsAPI-Konstante nehmen, die mit "#WS_EX_" beginnt...

Verfasst: 09.04.2006 12:43
von pjanfred
Is ja kras aber fileicht könten wir ja mal ne Liste von disem
#WS_EX_ befehl erstellen.

#WS_EX_TOOLWINDOW

Verfasst: 09.04.2006 12:47
von ts-soft
pjanfred hat geschrieben:Is ja kras aber fileicht könten wir ja mal ne Liste von disem
#WS_EX_ befehl erstellen.

#WS_EX_TOOLWINDOW
stehen in jeder API-Hilfe, ansonsten gibt noch den constants-explorer
von Gnozal

Verfasst: 09.04.2006 13:02
von Leonhard
Ich hab da mal gesucht (übersetzt):
#WS_EX_ACCEPTFILES = $10 ;Das Fenster soll Drag
#WS_EX_APPWINDOW = $40000 ;Das Fenster soll in der Taskleiste angezeigt werden
#WS_EX_CLIENTEDGE = $200 ;Das Fenster soll einen Rahmen mit vertieften Rand haben
#WS_EX_CONTEXTHELP = $400 ;Das Hilfesymbol (Fragezeichen) soll in der Titelleisteangeziegt werden
#WS_EX_CONTROLPARENT = $10000 ;Das Fenster soll Kindfenster beinhalten können.
#WS_EX_DLGMODALFRAME = $1 ;Das Fenster soll einen Modalen Dialogframe haben.
#WS_EX_LEFT = $0 ;Das Fenster soll Links ausgerichtet sein
#WS_EX_LEFTSCROLLBAR = $4000 ;Richtet die Scrollleiste Links aus wenn möglich
#WS_EX_LTRREADING = $0 ;Zeigt text von Links nach Rechts an
#WS_EX_MDICHILD = $40 ;Das Fenster ist ein Kindfenster
#WS_EX_NOACTIVATE = $8000000 ;(Win 2000) Das Fenster kann Durch den User nicht in den Vordergrund gebracht werden.
#WS_EX_NOPARENTNOTIFY = $4 ;Das Elternfenster wird nicht über das Erstellen oder Zerstören dieses Fenster benachrichtet
#WS_EX_OVERLAPPEDWINDOW = $300 ;Das Fenster hat einen Ramen eines Standard Fensters
#WS_EX_PALETTEWINDOW = $188 ;Das Fenster hat eine Werkzeugleiste di immer im Vordergrund ist
#WS_EX_RIGHT = $1000 'Das Fenster wird Rechts ausgerichtet
#WS_EX_RIGHTSCROLLBAR = $0 ;Zeigt die Scrollbar wenn vorhanden auf der Rechten seite an
#WS_EX_RTLREADING = $2000 ;Zeigt nach möglichkeit den Text von Rechts nach Links an
#WS_EX_STATICEDGE = $20000 ;Das Fenster hat eine 3D Ramen für gegenstände die keine Benutzereingabe ermöglichen
#WS_EX_TOOLWINDOW = $80 ;Das Fenster hat eine Kleinere Titelleiste
#WS_EX_TOPMOST = $8 'Das Fenster ist immer im Vordergrund
#WS_EX_TRANSPARENT = $20 ;Das Fenster ist Transparent denn es wird erst gezeichnet und dann angezeigt
#WS_EX_WINDOWEDGE = $100 ;Das Fenster hat einen Ramen mit ansteigendem Rand
Quelle: http://www.vbapihelpline.de/index2.php4

Verfasst: 09.04.2006 13:30
von pjanfred
kras
:allright: