Icon in ButtonTextGadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag 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)
Benutzeravatar
gnozal
Beiträge: 219
Registriert: 04.12.2004 13:01
Wohnort: Frankreich (67)
Kontaktdaten:

Beitrag 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).
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

What is XP+.
Thanks fpr the Tipp.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag 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 :oops:
Kann mir jemand nen Beispiel-Code machen?

Muss ich das jetzt auch auf Englisch schreiben? :?
v6.00
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag 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?
v6.00
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Beitrag 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
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@hjbremer

bitte verwende code-tags
[code][/code]
erreichbar über den CODE-button beim posten.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag 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
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag 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)
Antworten