Fuente/ Codesnippets | | | | | Einfaches Ejemplo en una Handle (Button oder Static) una Mapa de bits zuzuweisen.
KompilierenMarcaSeparacióndeclare 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
Bitte beachten el auch una XProfan.bmp en el gleichen Directorio liegt.
IF |
| | | | |
| | Ragnar Rehbein | en me es kein buttontext sichtbar. puede alguien bestätigen ?
r.r. |
| | | | |
| | | Exactamente, kein Buttontext, es sí una Mapa de bits-Button. Mußt sólo darauf achten el du auch una solch XPROFAN.BMP en el Directorio hast, oder simplemente una más BMP zeigen.
IF |
| | | | |
| | Ragnar Rehbein | el teeeest hatte me suggeriert, el grafik + texto en el button es. Yo hätte mich gefreut, si auch una möglichkeit sin la skcontrol.dll gegeben hätte.
r.r. |
| | | | |
| | | Kappier Yo irgendwie nich, una Button es doch entweder Mapa de bits, oder Texto. Schreib doch el Texto en el Grafik.
Das ginge sí incluso automatisiert (programmiert) el z.B. el Mapa de bits sólo en el Speicher(bitmap) generiert se, y luego en el But gelegt.
IF |
| | | | |
| | Ragnar Rehbein | also Yo verwende häufig bottons el una texto enthalten y rechts oder links daneben una icon. simplemente porque lo nett aussieht. el texto es en algunos programmen por ini konfigurierbar.
con bitmaps wäre el aufwand una texto oder una buttongröße a ändern viel größer. außerdem sería el sólo klappen si yo el bitmap a laufzeit erstelle, como el button sí a la el gewählen systemfarben passen se. transparenz como en icons es en bitmaps probablemente no posible. Yo müßte also el bereich el en en un icon transparent es entsprechend con uno farbe, el a systemfarbe harmoniert füllen y el test darauf plazieren.
bisher nutze Yo el skcontrol.dll. esta ha sin embargo auch nachteile. Yo kann z.b. no bottonstyles zuweisen. una vernünftigen togglebotton a redactar, läßt se sólo encima userbottons regeln, wobei Yo en lugar de 3 mindestens 4 oder 5 bitmaps bräuchte, si ego no sólo einrasten pero auch hovern dejar voluntad.
esta sería mich sí ya una kleines niedliches icon en una windows-togglebutton glücklich hacer.
Yo bin determinado no oberflächenvernarrt, aber una wenig nett debería lo aussehen y lo se se ligeramente ändern dejar.
todos sieht entonces z.b. así de:
[img:ce134c3423]https://www.familie-rehbein.de/bild1.JPG[/img:ce134c3423] sicherlich no überragend, aber irgendwie mejor como sólo buttons. rápidamente a redactar y rápidamente a ändern. y ellos hoovern dank el skcontrol.dll
r.r. |
| | | | |
| | | Hmmm, tal vez una Buttonkonstrukt encima Subclassing realisieren? Auch ne propio kleine DLL como 2. Hilo podría ligeramente erledigen qué Usted como beschreibst. Lo ging me hier sin embargo vordergründig en Mapa de bits-Buttons, no en Icon-Buttons. Yo verstehe sin embargo muy wohl Su Anliegen, habe aber desafortunadamente no Source parat (o Kopf) el Usted como rápidamente weiterhelfen podría. Sogern Yo Usted como weiterhelfen möchte....:|
Argh, doch, ahora fällt me lo que uno, tal vez hilft Usted una Trick, lege una Mapa de bits-Static en el Button a, así hast Usted doch Su icon. Zwar immernoch sin Transparents, aber con un dünnen Rahmen el después de unten versenkt wirkt, sería el incluso bastante nett aussehen. So hast Usted Su Standart-Button, con nem Mapa de bits-Static en él. Hmmm, obwohl, si una continuación übers Static hoovern sería podría uno sí no en el Button clic, hmmm, also auch no el wahre.
Bis denne, IF |
| | | | |
| | Uwe ''Pascal'' Niemeier | ¡Hola Personas!
Yo verwende dafür esta Rutina: KompilierenMarcaSeparaciónwindow 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
Das lässt se cualquier abwandeln, en z.B. gefärbte Buttons oder Buttons con farbigem Texto y beliebigem Font a erzeugen (muy praktisch para ChooseFont-Aufrufe). Oder uno podría el Texto bajo el Button Mostrar usw. Nachteilig es sólo, dass uno dafür el Grafik-API einsetzen muss. Falls al Ventana principal no direkt braucht (z.B. porque lo de una rahmenlosen Diálogo ausgefüllt se oder sonstwie unsichtbar es), puede ser seine Buttons auch con el Profano-Grafikbefehlen entwerfen: KompilierenMarcaSeparaciónwindow 20,20-500,300
settruecolor 1
$H Messages.ph
$H Windows.ph
declarar dlg&,a&
proc DrawButton---------------------------------------------------------------
parámetros Button&,Icon$
declarar bmp&,CDC&,Breite%,Höhe%,Color&,Texto$
bmp&=sendmessage(Button&,~BM_GETIMAGE,0,0)-Schon Mapa de bits disponible?
caso bmp&:deleteobject bmp&----------------Löschen!
casenot len(Icon$):volver------------------Kein neues Icon? => Ende
setstyle Button&,$54010080-----------------Style IconButton
Breite%=width(Button&)
Höhe%=height(Button&)
Color&=~GetSysColor(15)
Texto$=gettext$(Button&)
cls-------------con Standart-Befehlen en el Ventana principal dibujar
usebrush 1,Color&
usepen 0,1,Color&
rectangle 0,0-Breite%,Höhe%
drawicon Icon$,2,2
textcolor rgb(255,0,0),-1
drawtext 36,9,Texto$
CDC&=~CreateCompatibleDC(%hdc2)
bmp&=~CreateCompatibleBitmap(%hdc2,Breite%,Höhe%)
~Seleccionar objeto(CDC&,bmp&)
~BitBlt(CDC&,0,0,Breite%,Höhe%,%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: Como lässt se natürlich todavía vieles verbessern, pero yo bin nun veces kein Freund vorgekauter Lösungen
HTH Pascal |
| | | | |
| | Michael Dell | Schönes Ejemplo Pascal, aber auch Ifs Ejemplo kann una bißschen modifiziert voluntad. Mann poner simplemente nochn Kontrol en el Button. KompilierenMarcaSeparaciónDef 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/'>End
Läßt se, glaub Yo auch bastante bien a.
Bis denne... Michael |
| | | Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 01.07.2004 ▲ |
| |
|
Zum QuelltextTema opciones | 10.240 Views |
ThemeninformationenDieses Thema ha 4 subscriber: |