Source/ Codesnippets | | | | | Einfaches Beispiel um einem Handle (Button ou bien Static) un Bitmap zuzuweisen.
KompilierenMarqueSéparationdeclare 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 |
| | | | |
| | Ragnar Rehbein | chez mir ist ne...aucune buttontext sichtbar. peux cela quelqu'un bestätigen ?
r.r. |
| | | | |
| | | 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 |
| | | | |
| | 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. |
| | | | |
| | | 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 |
| | | | |
| | 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. |
| | | | |
| | | 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 |
| | | | |
| | Uwe ''Pascal'' Niemeier | allô gens!
je verwende pour cet Routine: KompilierenMarqueSéparationwindow 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éparationwindow 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 |
| | | | |
| | 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éparationDef 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 QuelltextOptions du sujet | 10.228 Views |
Themeninformationencet Thema hat 4 participant: |