Selbstgemachte Control-Buttons

Für allgemeine Fragen zur Programmierung mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Selbstgemachte Control-Buttons

Beitrag 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?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

also bei mir sehen die Button exakt genauso aus (liegt vllt daran das aich auch den Classic-Skin habe)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Bild
Standard AQUA
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Beitrag von rolaf »

Datt haste jutt jemacht meen Jung. :wink:

Bild

Standard XP-Skin in Olivgrün und Titelleisten-Schrift auf 12 Point gesetzt.
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Dafür würde ich dir dann aber das ImageGadget empfehlen. Dann haste auch nicht den Button-"Hintergrund" und den Focus Indicator.
NoUser

Beitrag von NoUser »

Bild
ChaNinja Skin

Bild
Desteny Skin

Gruss
Martin
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: Selbstgemachte Control-Buttons

Beitrag 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
Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten