Seite 1 von 5

Selbstgemachte Control-Buttons

Verfasst: 17.10.2008 01:44
von Kaeru Gaman
... würde mich mal interessieren, wie bei euren Styles / Layouts das Größenverhältnis aussieht.

Code: Alles auswählen

#Window = 0

Enumeration 
#Button1
#Button2
#Button3
#Button4
EndEnumeration

#Font_Webdings = 0

If Not LoadFont( #Font_Webdings, "Webdings", 48 )
  MessageRequester( "Error", "Can't open Font 'Webdings'.", #MB_ICONERROR )
EndIf

If Not OpenWindow( #Window, #PB_Ignore, #PB_Ignore, 336, 96, "Button Test")
  MessageRequester( "Error", "Can't open a Window...?", #MB_ICONQUESTION )
EndIf

  CreateGadgetList( WindowID( #Window ) )
    ButtonGadget  ( #Button1,  16, 16, 64, 64, Chr( $30 ) )
    SetGadgetFont ( #Button1, FontID( #Font_Webdings ) )

    ButtonGadget  ( #Button2,  96, 16, 64, 64, Chr( $32 ) )
    SetGadgetFont ( #Button2, FontID( #Font_Webdings ) )

    ButtonGadget  ( #Button3, 176, 16, 64, 64, Chr( $31 ) )
    SetGadgetFont ( #Button3, FontID( #Font_Webdings ) )

    ButtonGadget  ( #Button4, 256, 16, 64, 64, Chr( $72 ) )
    SetGadgetFont ( #Button4, FontID( #Font_Webdings ) )


Repeat
  EvID = WaitWindowEvent()
Until Evid = #PB_Event_CloseWindow
... also, ich hab den Classic-Skin auf XP, und ich find das verhältnis mit Font auf 75% der Buttongröße sieht ganz ok aus ...

Bild

PS:
weiß jemand von den API-cracks, wie man die anzeige des gepunkteten focus-rahmens auf nem button abschaltet?

Verfasst: 17.10.2008 03:24
von STARGÅTE
also bei mir sehen die Button exakt genauso aus (liegt vllt daran das aich auch den Classic-Skin habe)

Verfasst: 17.10.2008 03:36
von Kaeru Gaman
na, der Skin sieht ja mal richtig anständig aus...

täuscht erst etwas mit dem Glanzeffekt, aber die Zeichen sitzen vertikal schön mittig.

... mal sehen, ob irgendjemand mit irgendeinem Skin mit ner Negativ-Meldung kommt,
aber vorerst merk ich mir mal die 75%.
also 15pt für nen 20er button, 18pt für nen 24er, 24pt für nen 32er, etc.

Verfasst: 17.10.2008 04:15
von ts-soft
Bild
Standard AQUA

Verfasst: 17.10.2008 07:29
von rolaf
Datt haste jutt jemacht meen Jung. :wink:

Bild

Standard XP-Skin in Olivgrün und Titelleisten-Schrift auf 12 Point gesetzt.

Verfasst: 17.10.2008 11:16
von Kaeru Gaman
> Standard AQUA

auf Vista auch korrekt? na prima!


> Standard XP-Skin

danke, dessen wollte ich mich auch noch vergewissern.


> Datt haste jutt jemacht meen Jung.

danke für die blumen :oops:

...ich wollte nur endlich mal abchecken, wie man am einfachsten eigene Control-Buttons erstellen kann,
z.b. für ein rahmenloses Fenster, das weder resizable oder movable ist,
das aber trotzdem einen Teil oder alle drei dieser Buttons haben soll.

Verfasst: 17.10.2008 11:34
von X0r
Dafür würde ich dir dann aber das ImageGadget empfehlen. Dann haste auch nicht den Button-"Hintergrund" und den Focus Indicator.

Verfasst: 17.10.2008 11:36
von NoUser
Bild
ChaNinja Skin

Bild
Desteny Skin

Gruss
Martin

Verfasst: 17.10.2008 11:51
von Kaeru Gaman
X0r hat geschrieben:Dafür würde ich dir dann aber das ImageGadget empfehlen. Dann haste auch nicht den Button-"Hintergrund" und den Focus Indicator.
au contrair. es sollen ja buttons sein.
ich progge mir doch keinen wolf, um nen "pressed" status zu simulieren mit umschalten auf alternativbilder.
und den focusrahmen abzuschalten, das muss doch ein API-call sein,
irgendwas aus dem Kapitel der #WS_dingenskirchen...


@marroh
> ChaNinja Skin

das is ja interessant... wieso disabled der skin die Webdings?
dass du die Font hast zeigt ja der andere Skin...
oder sind die shots von verschiedenen rechnern?

wenn ja, schau doch mal bitte nach, ob die Font auf dem Rechner mit dem Ninja skin überhaupt vorhanden ist...

Re: Selbstgemachte Control-Buttons

Verfasst: 17.10.2008 11:58
von Fluid Byte
Kaeru Gaman hat geschrieben:weiß jemand von den API-cracks, wie man die anzeige des gepunkteten focus-rahmens auf nem button abschaltet?

Code: Alles auswählen

Global lpPrevFunc

SetGadgetFont(#PB_Default,LoadFont(0,"Webdings",48))

OpenWindow(0,0,0,400,100,"Button Test",#WS_OVERLAPPEDWINDOW | 1)
CreateGadgetList(WindowID(0))
ButtonGadget(0,16,16,64,64,Chr($30))
ButtonGadget(1,96,16,64,64,Chr($32))
ButtonGadget(2,176,16,64,64,Chr($31))
ButtonGadget(3,256,16,64,64,Chr($72))

Procedure WindowProc(hwnd,uMsg,wParam,lParam)
	Select uMsg
		Case #WM_SETFOCUS
		ProcedureReturn 0
	EndSelect
	
	ProcedureReturn CallWindowProc_(lpPrevFunc,hwnd,uMsg,wParam,lParam)
EndProcedure

For i=0 To 3
	lpPrevFunc = SetWindowLong_(GadgetID(i),#GWL_WNDPROC,@WindowProc())
Next

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend