Español
Fuente/ Codesnippets

Mapa de bits Button Handle Static Zuweisen

 
Einfaches Ejemplo en una Handle (Button oder Static) una Mapa de bits zuzuweisen.

KompilierenMarcaSeparación
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
Bitte beachten el auch una XProfan.bmp en el gleichen Directorio liegt.

IF
 
28.06.2004  
 




Ragnar
Rehbein
en me es kein buttontext sichtbar.
puede alguien bestätigen ?

r.r.
 
29.06.2004  
 



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
 
29.06.2004  
 




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.
 
29.06.2004  
 



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
 
29.06.2004  
 




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.
 
29.06.2004  
 



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
 
29.06.2004  
 




Uwe
''Pascal''
Niemeier
¡Hola Personas!

Yo verwende dafür esta Rutina:
KompilierenMarcaSeparación
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

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ón
window 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
 
30.06.2004  
 




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ón
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/'>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 Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

10.242 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie