Español
Fuente/ Codesnippets

Bitmaps Button Controls Icons Zuweisen

 

KompilierenMarcaSeparación
Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Bitmaps und Icons Button-Controls zuweisen
Lauffähig ab Profan-Version 5.0
##############################################################
#        BITMAPS und ICONS Button-Controls zuweisen          #
#                   für Profan 6.0 32-Bit                    #
##############################################################
#       Andreas Miethe * Bielefeld * September 1998          #
##############################################################
#   Ein Demo, das zeigen soll, was alles mit Button-Controls #
#            und Bitmaps bzw. Icons möglich ist.             #
##############################################################
#        Dieser Quellcode ist frei für alle Profaner         #
##############################################################
DEF @ALoadIcon(2) !USER32,LoadIconA
DEF @AExtractIcon(3) !SHELL32,ExtractIconA
DEF @ALoadImage(6) ! USER32,LoadImageA
Def @ASleep(1) !Kernel32,Sleep
Declare I%,Ende%
Declare BB1&,BB2&,BB3&,BB4&,BB5&,BB6&,BB7&,OB1&,OB2&,OB3&
Declare TB&
Declare ST#,Datei#,InstIcon&,DllIcon&,ExtIcon&,ExtBMP&,SCIcon&

Proc Lade_Icon

    Ein Icon aus der eigenen Instanz
    ################################
    Parameters Name$
    Dim ST#,30
    String st#,0 = Name$
    Let InstIcon& = @ALoadIcon(%hinstance,st#) Icon A aus HINSTANCE
    Dispose st#

Endproc

Proc Lade_UserIcon

    Ein Icon aus einer DLL
    ######################
    Parameters Name$,Nr%
    Dim ST#,30
    String ST#,0 = Name$
    Let DllIcon& = AExtractIcon(%Hinstance,ST#,Nr%)  Ausgang aus USER.EXE
    Dispose ST#

Endproc

Proc Lade_ExtIcon

    Ein Icon aus einer DLL
    ######################
    Parameters Name$
    Loadimage :
    Parameter : %Hinstance,Name$,Art,X,Y,Flags
    HInstance = das aufrufende Programm
    Name$     = der Name des externen Cursors
    Art       = BITMAP(0) ICON(1)
    X         = Groesse X-Achse
    Y         = Groesse Y-Achse
    Flags     = LoadFromFile($0010) Originalgroesse wenn keine Angaben($0040)
    Dim ST#,30
    String ST#,0 = Name$
    Let ExtIcon& = @ALoadImage(%HInstance,ST#,1,32,32,$0050) Externes Icon laden
    Dispose ST#

Endproc

Proc Lade_Scale_Icon

    Ein skaliertes Icon
    ###################
    Parameters Name$,X%,Y%
    Dim ST#,30
    String ST#,0 = Name$
    Let SCIcon& = @ALoadImage(%HInstance,ST#,1,X%,Y%,$0000) Externes Icon laden
    Dispose ST#
    Dispose Datei#

Endproc

Proc Lade_ExtBmp

    Ein Icon aus einer DLL
    ######################
    Parameters Name$,X%,Y%
    Dim ST#,30
    String ST#,0 = Name$
    Let ExtBMP& = @ALoadImage(%HInstance,ST#,0,X%,Y%,$0050) Externes Icon laden
    Dispose ST#

Endproc

Proc Mach_Toolbar

    Fast eine Toolbar...
    ####################
    Toolbar
    Let TB& = @Control(Static,,$50001000,0,0,WIDTH(%HWND),43,%hwnd,1000,%Hinstance)
    Buttons
    Let BB1& = @Control(Button,,$50000040,0,0,40,40,TB&,1001,%Hinstance)
    Let BB2& = @Control(Button,,$50000040,42,0,40,40,TB&,1002,%Hinstance)
    Let BB3& = @Control(Button,,$50000040,84,0,40,40,TB&,1003,%Hinstance)
    Let BB4& = @Control(Button,,$50000040,126,0,40,40,TB&,1004,%Hinstance)
    Let BB5& = @Control(Button,,$50000040,168,0,40,40,TB&,1005,%Hinstance)
    Let BB6& = @Control(Button,,$50000040,210,0,40,40,TB&,1006,%Hinstance)
    Let BB7& = @Control(Button,,$50000080,SUB(WIDTH(%HWND),70),5,60,32,TB&,1006,%Hinstance)
    Schalter
    Let OB1& = @Control(Button,,$50001043,274,0,40,40,TB&,1005,%Hinstance)
    Let OB2& = @Control(Button,,$50001043,316,0,40,40,TB&,1006,%Hinstance)
    Let OB3& = @Control(Button,,$50001043,358,0,40,40,TB&,1006,%Hinstance)
    Icon Laden und zuweisen
    #######################
    SENDMESSAGE für BUTTON-CONTROLS
    Parameter    : Buttonhandle,$00F7,Art,Bildhandle
    Buttonhandle : Das Handle des Buttons
     $00F7        : Die Message
    ART          : Bitmap(0) Icon(1)
    Bildhandle   : Das Handle des Bitmaps oder Icons
    ################################################
    Lade_Icon A
    Sendmessage(BB1&,$00F7,1,InstIcon&)            Icon dem 1. Button - Control zuweisen
    Lade_Icon Eimer
    Sendmessage(BB2&,$00F7,1,InstIcon&)            Icon dem 2. Button - Control zuweisen
    Lade_Icon Windows
    Sendmessage(BB3&,$00F7,1,InstIcon&)            Skaliertes Icon dem 3. Button - Control zuweisen
    Lade_scale_Icon Editor,24,24
    Sendmessage(BB4&,$00F7,1,SCIcon&)              Ico-Datei dem 4. Button - Control zuweisen
    Lade_ExtIcon Uhr.ico
    Sendmessage(BB5&,$00F7,1,ExtIcon&)             Externes Icon dem 5. Button - Control zuweisen
    Lade_UserIcon User.exe,6
    Sendmessage(BB6&,$00F7,1,DllIcon&)             Icon aus User.exe dem 6. Button - Control zuweisen
    Lade_ExtBmp Ok1.rle,0,0
    Sendmessage(BB7&,$00F7,0,Extbmp&)               Bitmap aus User.exe dem 6. Button - Control zuweisen
    Schalter
    Lade_Icon Computer
    Sendmessage(OB1&,$00F7,1,InstIcon&)            Icon dem 1. Schalter zuweisen
    Lade_Icon Drucker
    Sendmessage(OB2&,$00F7,1,InstIcon&)            Icon dem 2. Schalter zuweisen
    Lade_Icon Text
    Sendmessage(OB3&,$00F7,1,InstIcon&)            Icon dem 3. Schalter zuweisen
    ######################################################################################

Endproc

Proc Text_zeichnen

    UseFont Arial,15,0,0,0,0
    Textcolor @RGB(0,0,0),-1
    Drawtext 10,50,Erklärung zum Programm:
    Drawtext 10,70,1. Um einen schnelleren Bildschirmaufbau zu simulieren wird das Hauptfenster zuerst mal
    Drawtext 10,85,neben dem Bildschirm aufgebaut. Wenn der Aufbau komplett ist kommt es auf den Bildschirm.
    Drawtext 10,105,2.Toolbar
    Drawtext 10,120,Das ist natürlich kein Toolbar-Control sondern nur eine selbstgemachte Nachbildung
    Drawtext 10,135,Erzeugt mit Button-Controls. Die Controls haben als Style $00000040 um Icons aufnehmen zu können.
    Drawtext 10,150,Es können sowohl externe d.h. ICO-Dateien als auch interne Icons d.h. aus DLL oder HInstance geladen werden.
    Drawtext 10,165,Es besteht ebenfalls die Möglichkeit die Icons skaliert zu laden d.h. so groß wie man will.
    Drawtext 10,190,Es besteht hier auch die Möglichkeit richtige Bitmap-Buttons ( OK-Knopf ) zu erstellen.
    Drawtext 10,205,Hierbei ist nur den Style des Controls zu ändern in $00000080 für die Aufnahme von Bitmaps.
    Drawtext 10,220,Eine interessante Möglichkeit sein Programm individuell zu gestalten.
    Drawtext 10,250,Die drei Buttons rechts neben dem Ausgang sind Schalter d.h. sie können an- und ausgeschaltet werden
    Drawtext 10,265,Einfach mal alle Buttons anklicken, um auszutesten.
    Drawtext 10,290,Da die Icons und Bitmaps bis zum Programmende permanent geladen sind, sollte man speziell bei den Bitmaps
    Drawtext 10,305,darauf achten, daß diese nicht zu groß werden, sonst gehen die Systemresourcen in den Keller.
    Drawtext 10,320,Am besten als RLE-Dateien speichern, das reicht für Buttons vollständig aus.
    Drawtext 10,340,Das Fenster kann auch größer oder kleiner gezogen werden, die Toolbar paßt sich an.

Endproc

HAUPTPROGRAMM
#############
SetTrueColor 1
Windowtitle Button-Demo -> BITMAPS und ICONS auf Controls
Window add(%maxx,1),0-640,480           erstmal neben den Bildschirm
CLS @RGB(212,212,212)
Mach_Toolbar
Text_zeichnen
SetWindowPos %HWND = 50,50-640,480      jetzt auf den Bildschirm

Whilenot Ende%

    Getmessage
    Toolbar an Fenster anpassen
    SetWindowPos TB& = 0,0-WIDTH(%HWND),43                  Toolbar anpassen an Fenstergröße
    SetWindowPos BB7& = SUB(WIDTH(%HWND),70),5-60,32        OK-Button anpassen an Toolbar
    @ASleep(60)  etwas warten sonst sieht ja gar nicht das ein Button gedrückt wurde

    if getfocus(BB1&)

        @MessageBox(Icon A gewählt,Meldung,0)

    Elseif getfocus(BB2&)

        @MessageBox(Icon Eimer gewählt,Meldung,0)

    Elseif getfocus(BB3&)

        @MessageBox(Icon Windows gewählt,Meldung,0)

    Elseif getfocus(BB4&)

        @MessageBox(Scaliertes Icon aus HInstance gewählt,Meldung,0)

    Elseif getfocus(BB5&)

        @MessageBox(Externes Icon (ICO-Datei) gewählt,Meldung,0)

    Elseif getfocus(BB7&)

        @MessageBox(Bitmap-Button gewählt,Meldung,0)

    Elseif getfocus(BB6&)

        @MessageBox(Icon aus USER.EXE (Ausgang) gewählt - Programmende,Meldung,0)
        Let Ende% = 1

    
ss=s4 href='./../../function-references/XProfan/endif/'>endif Endwhile end
 
15.07.2007  
 




Georg
Bernhardt
Como bekomme Yo, el ahora una Mapa de bits rein? Posesiones alles mögliche intenta. ändere Yo como beschrieben en $00000080 es el Button weg. El Mapa de bits Yo en Profano.exe con Ressorceditor eingefügt, o en un DLL y el aufgerufen con Drawextbmp erscheint el bmp en el Ventana.

Georg
 
XProfan 10
10.02.2008  
 




Dietmar
Horn
¡Hola Georg,

el es doch eigentlich alles ya en el obigen Code. Der Haken a el Geschichte es hier, daß en Comunidad-Babyklappe el benötigten Ressourcen por desgracia, no mitgeliefert voluntad.

Sowohl en el MMJ-Quellcodesammlung como auch en el XProfan-Manager son el Demo-Codes dagegen lauffähig con allen benötigten Ressourcen enthalten.

Yo habe Usted el veces verkürzt en una Mapa de bits-Button umgeschrieben.

Im Anhang findest Usted el fertige EXE con zwei Bitmaps para Ausprobieren y el código dazu.

Saludo
Dietmar

326 kB
Hochgeladen:10.02.2008
Ladeanzahl262
Descargar
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
10.02.2008  
 




Georg
Bernhardt
Gracias Dietmar,

funktioniert, Posesiones aber todavía el problema, dass Yo el BMP en un DLL gepackt habe y ellos después de Deinem Verfahren simplemente no rauskriege. con

Dll&=Usedll(SPLITTER.dll)
DrawExtBmp DLL&, 115, 20, 20,1

es. Aber como kann Yo el DLL en Deinem Code einbinden y darauf zugreifen. Babyklappe ha me auch no weitergeholfen

Gracias
 
XProfan 10
11.02.2008  
 




Dietmar
Horn
¡Hola Georg,

auch algo como findest Usted a más Stellen ausführlich en el XProfan-Manager beschrieben.

Hier Es el API LoadImageA Su Freund, con el Usted primero el Handle des Bitmaps de el DLL bestimmst. Anschließend Usted necesita dieses Handel sólo todavía el Button por SendMessage zuweisen.

Im geänderten Ejemplo Yo el Mapa de bits OK1.BMP con el Manager como Ressource Mapa de bits con el Bezeichner BMP_1 en un DLL nombre BITMAP.DLL verfrachtet.

Siehe Anhang con EXE, PRF y DLL.

Saludo
Dietmar

454 kB
Hochgeladen:11.02.2008
Ladeanzahl236
Descargar
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
11.02.2008  
 




Georg
Bernhardt
Gracias, nu looft et sería uno hier sagen pero no con meiner DLL pero sólo Deiner aber como kann Yo sí mi Ressourcen reinpacken

Georg
 
XProfan 10
11.02.2008  
 




Jörg
Sellmeyer
Lo wäre, como siempre, hilfreich, si veces una lauffähiges Stück Code postest (Ventana, Einbindung el Dll, una Button, Dll en el Anhang), así uno veces qualifizierte Propuestas hacer kann. So stochert uno sólo en el Nebel rum, como wir sí no wissen, si y qué para Fehler Usted evtl. machst.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
11.02.2008  
 




Thomas
Freier
Thema Button:
Yo such todavía después de uno Solución Button perpendicular con texto, pero no el Texto de oben después de unten. Transparenz Yo bisher sólo el Typ *.Ico hinbekommen. El podría Yo pero no para Rechteck verbiegen.
KompilierenMarcaSeparación
declare tb&,bb7&,extbmp&,bitmap$,OB1&
declare st#,InstIcon&
bitmap$ = 14.BMP

ifnot Fileexists(bitmap$)

    Messagebox(Das Bitmap kann nicht gefunden werden!,F E H L E R,4112)
    end

endif

DEF @ALoadImage(6) ! USER32,LoadImageA
DEF @ALoadIcon(2) !USER32,LoadIconA

PROC LADE_EXTBMP

    Parameters Name$,X%,Y%
    Dim ST#,255
    String ST#,0 = Name$
    ExtBMP& = @ALoadImage(%HInstance,ST#,0,X%,Y%,$0050) Externes BMP laden
    Dispose ST#

ENDPROC

Proc Lade_Icon

    Parameters Name$
    Dim ST#,30
    String st#,0 = Name$
    Let InstIcon& = @ALoadIcon(%hinstance,st#) Icon A aus HINSTANCE
    Dispose st#

Endproc

PROC MACH_TOOLBAR

    TB& = @Control(Static,,$50001000,0,0,WIDTH(%HWND),143,%hwnd,1000,%Hinstance)
    BB7& =@Control(Button,test,$50000080+3+$1000,WIDTH(%HWND) - 70,5,30,80,TB&,2112,%Hinstance)
    LADE_EXTBMP bitmap$,0,0
    Sendmessage(BB7&,$00F7,0,Extbmp&)
    Let OB1& = @Control(Button,,$50001043,274,0,40,40,TB&,1005,%Hinstance)
    Lade_Icon Computer
    Sendmessage(OB1&,$00F7,1,InstIcon&)            Icon dem 1. Schalter zuweisen

ENDPROC

#############################################################
cls
WINDOWSTYLE 31
WINDOWTITLE Button als Schalter
WINDOW 0,0-640,440
MACH_TOOLBAR
Declare bild&
bild& = Create(hPic,-1,14.BMP)
DrawPic bild&, 40, 80; 0
DrawPic bild&, 80, 80; -1

while 0=0

    Drawtext 0,0,@str$(@GetCheck(BB7&))+
    Drawtext 0,20,@str$(@GetCheck(OB1&))+

wend

DeleteObject bild&
=s4 href='./../../function-references/XProfan/end/'>end
Unterschiedliche *.bmp, je después de Schaltzustand, es natürlich kein Thema.

6 kB
Hochgeladen:11.02.2008
Ladeanzahl212
Descargar
 
Gruß Thomas
Windows XP SP2, XProfan X2
11.02.2008  
 




Georg
Bernhardt
¡Hola

ha alles geklappt con Button, Mapa de bits y DLL.Gracias

Georg
 
XProfan 10
11.02.2008  
 



Hier es auch todavía qué
KompilierenMarcaSeparación
DEF LoadImage(6) ! USER32,LoadImageA
DECLARE icondll&
icondll&=usedll($SYSPATH+\shell32.dll)
DECLARE hlp%,neu%,aus%
DECLARE hlp$,neu$,aus$
DECLARE spalte%,zeile%,lang%,hoch%,steig%,tip%,font00%
font00%=CREATE(FONT,ARIAL,16,6,0,0,0)

proc showbutton damit das Icon auch immer wieder angezeigt wird, ohne diese Proc wird es in der Exe nicht mehr angezeigt

    parameters hdl&  handle des Static controls
    showwindow(hdl&,0)
    showwindow(hdl&,1)

endproc

Parameter: Fenster, oder Dialoghandle, Buttontext, handle der iconresource, Iconname, x%,y%,w%,h%, ButtonID, Text Links, rechts oder Zentiert

subproc Create.ITextbutton

    Parameters hwnd&,text$,source&,image$,x%,y%,w%,h%,id&,dct$
    declare button&,st&,Imh&,hpos&,hwid&
    Imh& = LoadImage(source&,addr(Image$),$1,20,20,$0) Icongröße = 20 x 20

    if dct$ = upper$(R)

        button& = Control(BUTTON,text$,$54010200,x%,y%,w%,h%,hwnd&,id&,icondll&,$0100)

    elseif dct$ = upper$(L)

        button& = Control(BUTTON,text$,$54010100,x%,y%,w%,h%,hwnd&,id&,icondll&,$0100)

    elseif dct$ = upper$(C)

        button& = Control(BUTTON,text$,$54010000,x%,y%,w%,h%,hwnd&,id&,icondll&,$0100)

    endif

    hpos& = height(button&) - 20
    hpos& = int(hpos&/2)
    hwid& = width(button&) -23  3 pixel vom Rand weg + Icongröße

    if (dct$ = upper$(R)) or (dct$ = upper$(C))

        st& = control(Static,,$50000003,3,hpos&,20,20,button&,0,%Hinstance)

    else

        st& = control(Static,,$50000003,hwid&,hpos&,20,20,button&,0,%Hinstance)

    endif

    Sendmessage(st&,$170,Imh&,0)
    showbutton(st&)
    return str$(button&) + | + str$(st&)

endproc

############################################################
Window 0,0-300,200
spalte%=10:zeile%=10:lang%=200:hoch%=30:steig%=40
hlp$ =  create(ITextbutton,%hwnd,F1 Hilfe ,icondll&,#24,spalte%,zeile%,lang%,hoch%,10,R)
hlp% = val(substr$(hlp$,1,|))
SetFont hlp%,font00%
tip%=CREATE(TOOLTIP,%HWnd,hlp%, Den Hilfetext anzeigen...)
zeile%=(zeile%+steig%)
neu$ =  create(ITextbutton,%hwnd,&Neu... ,icondll&,#3,spalte%,zeile%,lang%,hoch%,11,C)
neu% = val(substr$(neu$,1,|))
SetFont neu%,font00%
tip%=CREATE(TOOLTIP,%HWnd,neu%, Neue Datei erstellen...)
zeile%=(zeile%+steig%)
aus$ =  create(ITextbutton,%hwnd,ESC Ende ,icondll&,#28,spalte%,zeile%,lang%,hoch%,12,L)
aus% = val(substr$(aus$,1,|))
SetFont aus%,font00%
tip%=CREATE(TOOLTIP,%HWnd,aus%, Programm beenden)
WAITI
a> FIN
 
11.02.2008  
 




Dietmar
Horn

Thema Button:
Yo such todavía después de uno Solución Button perpendicular con texto, pero no el Texto de oben después de unten. Transparenz Yo bisher sólo el Typ *.Ico hinbekommen. El podría Yo pero no para Rechteck verbiegen.


Hola Tomás,

porque bisher a Deiner Cuestión todavía kein Antwort-Posting gekommen es, vermute Yo veces, daß no sólo Yo a dämlich bin, en Su eigentliches Anliegen a verstehen. Tal vez könntest Usted el todavía una vez así (en)formulieren, daß auch Yo kapiere, worum lo Usted eigentlich va? Danach kann Usted hier con a Sicherheit grenzender Wahrscheinlichkeit weitergeholfen voluntad.

Saludo
Dietmar
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
12.02.2008  
 




Thomas
Freier
¡Hola Dietmar,

el podría así ser, por lo tanto todavía una vez el Cuestión en el Klartext:
En MCopyBmp 10, 10 - 100, 100 > 50, 50; -1 puede wir bestimmen, welche Farbe como transparent anzusehen es.
Ist el auch posible, si una *.bmp en una Button se?
Yo glaube mich erinnern a puede, dass lo con *.gif y Transparenz auch no va.
Oder?

Aber a dieser Punto todavía una Dankeschön para el MMJ-Quellcodesammlung.
Schade, Yo desafortunadamente no Verlinkung en esta Páginas gefunden oder en unmittelbarer Nähe el Freeware Profano 6.6 . Sie es wert!
 
Gruß Thomas
Windows XP SP2, XProfan X2
13.02.2008  
 




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

13.230 Views

Untitledvor 0 min.
Normann Strübli08.02.2023
Jörg Sellmeyer05.06.2020
Rainer Hoefs21.02.2018
Andre Rohland04.02.2018
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