Seite 5 von 6
Verfasst: 04.04.2007 01:43
von Konne
In dieser Beziehung schein Windows ziemlich Versions abhängig zu sein. Ich würde die Version chekcen und jenachdem entscheiden ob ich den Button selbst zeichene (zB mit Owenerdraw)
Verfasst: 04.04.2007 12:10
von gnozal
Nice code.
Note that :
- the BCM_SETIMAGELIST message only works for Windows XP+.
- if you get linker errors with ImageList_AddIcon_(himagelist, ImageID), you can replace it with ImageList_ReplaceIcon_(himagelist, -1, ImageID).
Verfasst: 04.04.2007 23:04
von Konne
What is XP+.
Thanks fpr the Tipp.
Verfasst: 04.04.2007 23:15
von Kaeru Gaman
I think he means "XP and higher"
ich glaub er meint "ab XP"
the point is, ; der punkt ist
- fetching system font ; systemfont abfragen
- drawing an image with the icon and some text ; ein image mit dem icon und etwas text erzeugen
- setting up a ButtonImageGadget ; ein ButtonImageGadget erzeugen
will just work fine and not take too much ressources.
wird einfach gut funktionieren und braucht nicht zu viele ressourcen.
Verfasst: 07.04.2007 09:08
von Thomas
gnozal hat geschrieben:Nice code.
Note that :
- the BCM_SETIMAGELIST message only works for Windows XP+.
- if you get linker errors with ImageList_AddIcon_(himagelist, ImageID), you can replace it with ImageList_ReplaceIcon_(himagelist, -1, ImageID).
Sorry, da steig ich nicht durch
Kann mir jemand nen Beispiel-Code machen?
Muss ich das jetzt auch auf Englisch schreiben?

Verfasst: 08.04.2007 19:16
von Thomas
Da fällt mir gerade was ein ...
Im CodeArchiv gibts doch so nen Code, wo man ein Icon im ComboBoxGadget (vor dem Text) darstellen kann.
Kann man das für einen Button umschreiben?
Verfasst: 13.04.2007 21:35
von hjbremer
Probiere es einmal damit:
hicon = LoadIcon_(0,#IDI_ASTERISK )
;oder eigenes Bild
;hicon=ImageID(CatchImage(#PB_Any, ?LogoTuer))
CreateImage(1, 100, 40)
StartDrawing(ImageOutput(1))
Box(0,0,100,40,#Red)
DrawImage(hicon,3,3)
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(50,10,"Ende",#Blue)
StopDrawing ()
hwnd = OpenWindow(0,0,0,640,480,"leer")
CreateGadgetList(hwnd)
ButtonImageGadget(0,0,0,100,40,ImageID(1))
Repeat : Until WaitWindowEvent() = 16
End
;für eigenes Bild, ev. mit Pfadangaben
;LogoTuer: IncludeBinary "icotuer.bmp"
viele Grüße
PB Vers.4.02
Verfasst: 13.04.2007 21:41
von Kaeru Gaman
@hjbremer
bitte verwende code-tags
[code][/code]
erreichbar über den CODE-button beim posten.
Verfasst: 13.04.2007 23:35
von roherter
Hier mal eine Procedure aus einem Program von mir,kann man noch anpassen.
Code: Alles auswählen
;-IconButton Procedure
Procedure CreateIconButton(win_hwnd,x,y,xicon,yicon,widt,heig,ico,BText$,iconadr)
img=CreateImage(#PB_Any,widt,heig)
BIcon=CatchImage(#PB_Any,iconadr)
StartDrawing(ImageOutput(img))
Box(0,0,widt,heig,GetSysColor_(#COLOR_BTNFACE))
DrawingMode(#PB_2DDrawing_Transparent)
DrawImage(ImageID(BIcon),xicon,yicon)
DrawText(xicon+20,heig/2-8,BText$)
StopDrawing()
UseGadgetList(WindowID(win_hwnd))
Buttonerg=ButtonImageGadget(#PB_Any,x,y,widt,heig,ImageID(img))
ProcedureReturn Buttonerg
EndProcedure
;-End ButtonIcon
Das hier kommt in die Gadgetlist
Code: Alles auswählen
iconbutt1=CreateIconButton(#Window_0,10,340,5,8,100,30,0,"Speichern",?iconsav)
;voraus gesetzt es wurde ein bild eingebund
Verfasst: 14.04.2007 00:40
von Konne
Naja das sind doch alles nur billige fakes. Wenn du es richtig machen willst benutzt du Ownerdraw.
Falls du Englisch kannst lese dir mal den Post von mir im Englischen Board durch.
http://www.purebasic.fr/english/viewtop ... aw&start=0
(Vielleicht schreib ich es dir auch kurz wenn ich dazukomme)