Français
Source/ Codesnippets

Bitmap Button Handle Static Zuweisen

 
Einfaches Beispiel um einem Handle (Button ou bien Static) un Bitmap zuzuweisen.

KompilierenMarqueSéparation
declare oid_dateiname#
DEF Createpicstatic(6) control(STATIC,@$(2),$5400010E,@%(3),@%(4),@%(5),@%(6),@%(1),2000, %HInstance)
DEF Createpicbutton(6) Control(BUTTON,@$(2),$50000080,@%(3),@%(4),@%(5),@%(6),@%(1),2000,%hinstance)
DEF Createpicbutton_od(6) Control(BUTTON,@$(2),$50000000+128+32768,@%(3),@%(4),@%(5),@%(6),@%(1),1000,%hinstance)
DEF LoadImage(6) !USER32,LoadImageA

proc oid_pic2hdl

    String oid_dateiname#,0=@$(1)
    return LoadImage(%HInstance,oid_dateiname#,0,0,0,$00050)

endproc

proc oid_pic2static

    parameters static&,pic&
    Sendmessage(static&,$172,0,pic&)

endproc

proc oid_pic2button

    parameters static&,pic&
    Sendmessage(static&,$00F7,0,pic&)

endproc

print
dim oid_dateiname#,256
oid_pic2button Createpicbutton_od(%hwnd,teeeest,10,10,100,100),oid_pic2hdl(xprofan.bmp)
oid_pic2button Createpicbutton(%hwnd,teeeest,220,10,100,100),oid_pic2hdl(xprofan.bmp)
oid_pic2static Createpicstatic(%hwnd,teeeest,110,10,100,100),oid_pic2hdl(xprofan.bmp)
dispose oid_dateiname#
waitinput
s'il te plaît tenir compte de cela aussi un XProfan.bmp im gleichen Verzeichnis liegt.

iF
 
28.06.2004  
 




Ragnar
Rehbein
chez mir ist ne...aucune buttontext sichtbar.
peux cela quelqu'un bestätigen ?

r.r.
 
29.06.2004  
 



oui c'est ca, ne...aucune Buttontext, ist oui un Bitmap-Button. dois seulement puis achten cela du aussi un solch XPROFAN.BMP im Verzeichnis la hâte, ou bien simple sur un d'autre BMP montrer.

iF
 
29.06.2004  
 




Ragnar
Rehbein
cela teeeest hatte mir suggeriert, cela grafik + text sur dem button ist.
je hätte mich gefreut, si es aussi une möglichkeit sans qui skcontrol.dll gegeben hätte.

r.r.
 
29.06.2004  
 



Kappier je irgendwie nich, un Button mais est entweder Bitmap, ou bien Text. Schreib doch den Text sur qui Grafik.

cela ginge oui sogar automatisiert (programmiert) cela z.B. qui Bitmap seulement im grenier(bitmap) generiert wird, et ensuite sur den But gelegt.

iF
 
29.06.2004  
 




Ragnar
Rehbein
alors je verwende häufig bottons qui une text enthalten et à droite ou bien à gauche daneben un icon. simple weil es gentil aussieht.
qui text ist chez einigen programmen per ini konfigurierbar.

avec bitmaps wäre qui aufwand une text ou bien une buttongröße trop changement viel größer. aussi serait cela seulement marcher si je qui bitmap zur laufzeit erstelle, là qui button Oui pour den gewählen systemfarben passen soll. transparenz comment chez icons ist chez bitmaps wohl pas possible. je devrait alors den bereich qui dans dans einem icon transparent ist entsprechend avec einer la couleur, qui zur systemfarbe harmoniert füllen et den test puis plazieren.

bisher nutze je qui skcontrol.dll.
cet hat cependant aussi nachteile. je peux z.b. aucun bottonstyles zuweisen.
une vernünftigen togglebotton trop erstellen, läßt sich seulement sur userbottons régulariser, wobei je statt 3 mindestens 4 ou bien 5 bitmaps bräuchte, si ego pas seulement einrasten mais aussi hovern laisser veux.

dabei serait mich oui déjà un kleines niedliches icon sur einem windows-togglebutton glücklich faire.

je suis bestimmt pas oberflächenvernarrt, mais un peu gentil sollte es air et es soll sich léger changement laisser.

cela ganze sieht ensuite z.b. so aus:

[img:ce134c3423]https://www.la famille-rehbein.de/bild1.JPG[/img:ce134c3423]
sicherlich pas überragend, mais irgendwie besser comme seulement buttons.
vite trop erstellen et vite trop changement.
et vous hoovern dank qui skcontrol.dll

r.r.
 
29.06.2004  
 



Hmmm, peut-être une Buttonkonstrukt sur Subclassing realisieren? aussi ne eigene kleine DLL comme 2. Fil pourrait léger erledigen quoi Du là beschreibst. Es ging mir ici cependant vordergründig um Bitmap-Buttons, pas um Icon-Buttons. je comprends cependant très wohl Dein Anliegen, habe mais malheureusement keinen Source prêt (ou bien im tête) qui Dir là vite weiterhelfen pourrait. Sogern je Dir là weiterhelfen voudrais....:|

Argh, doch, maintenant fällt mir quoi un, peut-être hilft Dir un Trick, lege un Bitmap-Static sur dem Button à, so la hâte Du doch Dein icon. Zwar immernoch sans Transparents, mais avec einem dünnen cadre qui pour unten versenkt wirkt, serait cela sogar entier gentil air. So la hâte Du Dein Standart-Button, avec nem Bitmap-Static sur elle. Hmmm, quoique, si on ensuite übers Static hoovern serait pourrait on oui pas sur den Button klicken, hmmm, alors aussi pas cela wahre.

jusqu'à denne, iF
 
29.06.2004  
 




Uwe
''Pascal''
Niemeier
allô gens!

je verwende pour cet Routine:
KompilierenMarqueSéparation
window 20,20-500,300
declare dlg&,a&,b&,a#
dim a#,255
 $H Messages.ph
 $H Windows.ph

proc IconButton---------------------------------------------------------------

    parameters Button&,Icon&
    declare bmp&,CDC&,Breite%,Höhe%,Text$,Brush&
    bmp&=sendmessage(Button&,~BM_GETIMAGE,0,0)-Schon Bitmap vorhanden?
    case bmp&:deleteobject bmp&----------------Löschen!
    casenot Icon&:return-----------------------Kein neues Icon? => Ende
    setstyle Button&,$54010080-----------------Style IconButton
    Breite%=width(Button&)
    Höhe%=height(Button&)
    Text$=gettext$(Button&)
    CDC&=~CreateCompatibleDC(%hdc)
    bmp&=~CreateCompatibleBitmap(%hdc,Breite%,Höhe%)
    ~SelectObject(CDC&,bmp&)
    ~SetBkMode(CDC&,~TRANSPARENT)--------------keine Hintergrundfarbe für Text
    Brush&=~GetSysColorBrush(~COLOR_3DFACE)----Hintergrund Systemfarbe
    ~SelectObject(CDC&,Brush&)
    ~Rectangle(CDC&,0,0,Breite%,Höhe%)---------Button mit Systemfarbe füllen
    ~DrawIcon(CDC&,2,2,Icon&)------------------Icon zeichnen (Abstand Rand 2,2)
    clear a#
    long a#,0=34-------------------------------Text beginnt hinter Icon
    long a#,8=Breite%
    long a#,12=Höhe%---------------------------Text wird vert. zentriert => Ganze Höhe angeben
    ~DrawText(CDC&,addr(Text$),len(Text$),a#,~DT_SINGLELINE | ~DT_CENTER | ~DT_VCENTER)
    ~DeleteDC(CDC&)
    deleteobject Brush&
    sendmessage(Button&,~BM_SETIMAGE,0,bmp&)--Bitmap zuweisen
    endproc-----------------------------------------------------------------------
    dlg&=create("dialog",%hwnd,"",200,200,300,300)
    a&=create("Button",dlg&,"Testbutton",110,10,110,40)
    b&=~LoadImageA(%hinstance,"A",~IMAGE_ICON,0,0,~LR_LOADREALSIZE)
    IconButton a&,b&
    waitkey
    b&=~LoadImageA(%hinstance,"Gesicht",~IMAGE_ICON,0,0,~LR_LOADREALSIZE)
    IconButton a&,b&
    waitkey
    IconButton a&,0
    end

cela peut sich beliebig abwandeln, um z.B. gefärbte Buttons ou bien Buttons avec farbigem Text et beliebigem Font trop erzeugen (très pratique pour ChooseFont-Aufrufe). ou bien on pourrait den Text sous dem Button Montrer usw.
préjudiciable ist seulement, dass on pour qui Grafik-API einsetzen muss. si on cela Hauptfenster pas direct braucht (z.B. weil es de einem rahmenlosen Dialog ausgefüllt wird ou bien sonstwie unsichtbar ist), peux on sa Buttons aussi avec den Profan-Grafikbefehlen entwerfen:
KompilierenMarqueSéparation
window 20,20-500,300
settruecolor 1
 $H Messages.ph
 $H Windows.ph
declare dlg&,a&

proc DrawButton---------------------------------------------------------------

    parameters Button&,Icon$
    declare bmp&,CDC&,Breite%,Hauteur%,Color&,Text$
    bmp&=sendmessage(Button&,~BM_GETIMAGE,0,0)-déjà Bitmap vorhanden?
    cas bmp&:deleteobject bmp&----------------Effacer!
    casenot len(Icon$):return------------------ne...aucune nouveau Icon? => Ende
    setstyle Button&,$54010080-----------------Style IconButton
    Breite%=width(Button&)
    Hauteur%=height(Button&)
    Color&=~GetSysColor(15)
    Text$=gettext$(Button&)
    cls-------------avec Standart-Befehlen ins Hauptfenster zeichnen
    usebrush 1,Color&
    usepen 0,1,Color&
    rectangle 0,0-Breite%,Hauteur%
    drawicon Icon$,2,2
    textcolor rgb(255,0,0),-1
    drawtext 36,9,Text$
    CDC&=~CreateCompatibleDC(%hdc2)
    bmp&=~CreateCompatibleBitmap(%hdc2,Breite%,Hauteur%)
    ~SelectObject(CDC&,bmp&)
    ~BitBlt(CDC&,0,0,Breite%,Hauteur%,%hdc2,0,0,$CC0020)
    ~DeleteDC(CDC&)
    sendmessage(Button&,~BM_SETIMAGE,0,bmp&)
    endproc-----------------------------------------------------------------------
    dlg&=create("dialog",%hwnd,»,200,50,300,300)
    a&=create("Button",dlg&,"Testbutton",50,50,120,40)
    DrawButton a&,"A"
    waitkey
    DrawButton a&,"Gesicht"
    waitkey
    DrawButton a&,»
    end

PS: là peut sich naturellement encore vieles améliorer, mais je suis eh bien la fois ne...aucune ami vorgekauter Lösungen

HTH
Pascal
 
30.06.2004  
 




Michael
Dell
Schönes Beispiel Pascal, mais aussi Ifs Beispiel peux un bißschen modifiziert volonté. homme mets simple nochn Kontrol sur den Button.
KompilierenMarqueSéparation
Def GSC(1) !"USER32","GetSysColor"
Def GBackC(0) GSC(15)
declare Aus&,oid_dateiname#,pb2&,pb2_txt&
© Andreas Miethe , Bielefeld , 1998
DEF Createpicstatic(6) control("STATIC",@$(2),$5400010E,@%(3),@%(4),@%(5),@%(6),@%(1),2000,%HInstance)
DEF Createpicbutton(6) Control("BUTTON",@$(2),$50000188,@%(3),@%(4),@%(5),@%(6),@%(1),2000,%hinstance)
DEF Createpicbutton_od(6) Control("BUTTON",@$(2),$50000000+128+32768,@%(3),@%(4),@%(5),@%(6),@%(1),1000,%hinstance)
DEF LoadImage(6) !"USER32","LoadImageA"

PROC ButtonText

    SetText &(1),$(2)

ENDPROC

proc oid_pic2hdl

    String oid_dateiname#,0=@$(1)
    return LoadImage(%HInstance,oid_dateiname#,0,0,0,$00050)

endproc

proc oid_pic2static

    parameters static&,pic&
    Sendmessage(static&,$172,0,pic&)

endproc

proc oid_pic2button

    parameters static&,pic&
    Sendmessage(static&,$00F7,0,pic&)

endproc

SetTrueColor 1
Cls GBackC()
dim oid_dateiname#,256
oid_pic2button Createpicbutton_od(%hwnd,"Teeeest1",10,10,100,100),oid_pic2hdl("xprofan.bmp")
pb2& = Createpicbutton(%hwnd,"Teeeest2",220,10,400,100)  geändert
oid_pic2button pb2&,oid_pic2hdl("xprofan.bmp")
pb2_txt& = control("STATIC","",$54000081,104,39,292,22,pb2&,2000,%HInstance)
oid_pic2static Createpicstatic(%hwnd,"Teeeest3",116,60,100,100),oid_pic2hdl("xprofan.bmp")
ButtonText(pb2_txt&,"Hallolo")
dispose oid_dateiname#
Aus& = 0

WhileNot Aus&

    WaitInput

    If Equ(%Key,-2)

        Aus& = 1

    ElseIf GetFocus(pb2&)

        ButtonText(pb2_txt&,"Schöööön...")

    Else

        ButtonText(pb2_txt&,"Hallolo")

    EndIf

EndWhile
ass=s4 href='./../../funktionsreferenzen/XProfan/end/'>Fin

Läßt sich, glaub je aussi pas mal à.

jusqu'à denne... Michael
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
01.07.2004  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

10.311 Views

Untitledvor 0 min.
Normann Strübli08.02.2023
Rainer Hoefs10.05.2019
Peter Max Müller23.10.2017
Tommy16.03.2015
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie