Window-Skins

Anfängerfragen zum Programmieren mit PureBasic.
Eclipse
Beiträge: 99
Registriert: 04.06.2005 18:09

Window-Skins

Beitrag von Eclipse »

Hi Leute,

Ich programmiere derzeit eine kleine Applikation für ein Spiel, und nun möchte ich das Design etwas anpassen. Anfangs wollte ich das ganze mit einfachen ImageGadgets erledigen, aber so habe ich folgendes Problem:
Ich möchte einen Button an den unteren Rand des Fensters so platzieren, dass er zur Hälfte darüber hinausragt. Dies ist so aber nicht möglich.

Hat jemand einen Vorschlag was ich machen könnte?

edit:
ups, verklickt, sollte eigentlich in den Anfänger-Bereich^^
Egal, arbeite trotzdem mit PB4.
Zuletzt geändert von Eclipse am 19.04.2007 18:18, insgesamt 1-mal geändert.
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

Such mal nach SkinWin.

Hier hats dazu auch ein paar Beispiele:
http://www.purearea.net/pb/CodeArchiv/German.html

Thalius
Eclipse
Beiträge: 99
Registriert: 04.06.2005 18:09

Beitrag von Eclipse »

Nun gut, damit kann man wirklich jede Menge nettes Zeugs machen. Trotzdem zeigt mir dieses Beispiel nicht wirklich wie ich das "Hinausragen" hinkriegen könnte. Kann man den Fensterhindergrund irgendwie tranzparent stellen?
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

Jup.. Im prinzip erstellst du ein unsichtbares Fenster. Und plazierst da drauf deine Elemente. Klar können die nicht über das Fenster hinausgehen. Aber schliesslich kannst du ja auch nur gadgets auf Fenstern erstellen oder ? =P

Du passt einfach deinen Hintergrund so an dass du noch genug Raum hast deinen Button da heraus ragen zu lassen ( Transparente fenster kannst du übrigens auf transparenter Fläche auch nicht selektieren ).

ps. das ist die gebräuchliche Methode ( nicht nur in PB ... )

Thalius
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

1.) Falsches Forum!
2.) Du brauchst SkinWin nicht. Das lässt sich leicht mit dem Kombinieren Regions bewerkstelligen:

Code: Alles auswählen

#BTNWIDTH = 100 : #BTNHEIGHT = 50

OpenWindow(0,0,0,320,240,"void",#WS_POPUP| #WS_SYSMENU | #WS_BORDER | 1)
CreateGadgetList(WindowID(0))
ButtonGadget(0,0,0,0,0,"Ich wurde halbiert!")

SetWindowColor(0,RGB(120,150,20))

GetWindowRect_(WindowID(0),wrc.RECT)

WW = wrc\right-wrc\Left
WH = wrc\bottom-wrc\top
BX = WW/2 - #BTNWIDTH/2

hRgnResult = CreateRectRgn_(0,0,0,0)
hRgnRect1 = CreateRectRgn_(0,0,WW,WH - #BTNHEIGHT/2)
hRgnRect2 = CreateRectRgn_(BX,WH - #BTNHEIGHT/2,BX + #BTNWIDTH,WH)

CombineRgn_(hRgnResult,hRgnRect1,hRgnRect2,#RGN_OR)

SetWindowRgn_(WindowID(0),hRgnResult,1)

; 2 x minus 1 Pixel wegen #WS_BORDER
ResizeGadget(0,BX-1,(WH-#BTNHEIGHT/2)-1,#BTNWIDTH,#BTNHEIGHT)

While WaitWindowEvent() ! 16 : Wend
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

@Fluid_Byte
APIhacker ! :mrgreen: hehe

je nachdem wasser machen will ists einfacher. :)

Apropos gugg mal das gameSkin Beispiel von Danilo im CodeArchiv an.
Eclipse
Beiträge: 99
Registriert: 04.06.2005 18:09

Beitrag von Eclipse »

Fluid Byte hat geschrieben:1.) Falsches Forum!
edit:
ups, verklickt, sollte eigentlich in den Anfänger-Bereich^^
Egal, arbeite trotzdem mit PB4.
;-)
zip zap zup - erledigt - Kaeru fecit

Vielen Dank euch beiden, hätte nicht gedacht, dass dies so einfach gehen würde.
Eclipse
Beiträge: 99
Registriert: 04.06.2005 18:09

Beitrag von Eclipse »

Noch eine kleine Frage^^:
Ich hab in meinem Fenster nun mit

Code: Alles auswählen

SetWindowLong_(WindowID(0),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|524288)
SetLayeredWindowAttributes_(WindowID(0),RGB(255,255,255),0,1)
alle weißen Stellen transparent gestellt.

Nun möchte ich aber das selbe auch mit einem Gadget (WebGadget) machen.
Wenn ich jetzt aber einfach die IDs austausche klappt das natürlich nicht ...
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Code: Alles auswählen

getdc_(gadgetid)
vielleicht? :roll:
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Eclipse
Beiträge: 99
Registriert: 04.06.2005 18:09

Beitrag von Eclipse »

Tut mir Leid, aber das hilft mir jetzt nicht unbedingt weiter. Kann mir das bitte jemand etwas genauer erklären? Hab nicht wirklich Ahnung von der WinApi.
Antworten