English
Source / code snippets

Bitmaps Button Controls Icons allocate

 

CompileMarkSeparation
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
 
07/15/07  
 




Georg
Bernhardt
How do I get whom now one Bitmap mere? have all sorts of things attempts. change I How described in $00000080 is the Button lane. The Bitmap have I in Profan.exe with Ressorceditor eingefügt, or in a DLL and The called with Drawextbmp appear the bmp on the Window.

Georg
 
XProfan 10
02/10/08  
 




Dietmar
Horn
Hello Georg,

the standing still really everything already in the obigen code. The crux on the story is here, that in the Community-Babyklappe The required Ressourcen unfortunately not included go.

Sowohl in the MMJ-Quellcodesammlung as well as in the XProfan-manager are The demonstration-Codes against it run with all required Ressourcen include.

I have you the time verkürzt on a Bitmap-Button rewritten.

in the attachment find You The finished EXE with two Bitmaps to that try and the code moreover.

Greeting
Dietmar

326 kB
Hochgeladen:02/10/08
Downloadcounter262
Download
 
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:  [...] 
02/10/08  
 




Georg
Bernhardt
thanks Dietmar,

functions, have but yet the trouble, I The In BMP a DLL gepackt have and to Your take action simply not rauskriege. with

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

goes it. but how can I The DLL in Your code integrate and hereon grab. Babyklappe has me neither weitergeholfen

thanks
 
XProfan 10
02/11/08  
 




Dietmar
Horn
Hello Georg,

too something like find You on several to put in detail in the XProfan-manager described.

here's The API LoadImageA your friend, with the You first of all the lever the Bitmaps from the DLL bestimmst. subsequently will need you this deal only yet the Button by SendMessage allocate.

in the modified example have I the Bitmap OK1.BMP with the manager as Ressource Bitmap with the Bezeichner BMP_1 in a DLL namens BITMAP.DLL verfrachtet.

See attachment with EXE, PRF and DLL.

Greeting
Dietmar

454 kB
Hochgeladen:02/11/08
Downloadcounter236
Download
 
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:  [...] 
02/11/08  
 




Georg
Bernhardt
thanks, nu looft et would one here say but not of my DLL separate only with your but since can I Yes my Ressourcen reinpacken

Georg
 
XProfan 10
02/11/08  
 




Jörg
Sellmeyer
it would, How always, helpful, if you time one lauffähiges Piece code postest (Window, Integration the Dll, one Button, Dll in the attachment), so one time qualifying Proposals can make. so stochert one only mist rum, there we Yes not know, whether and take off Error You evtl. make.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
02/11/08  
 




Thomas
Freier
Topic Button:
I such yet after a Solution for Button vertically with text, but not whom Text of supra down. transparency have I yet only with the type *.Ico hinbekommen. The could I but not to that rectangle verbiegen.
CompileMarkSeparation
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
different *.bmp, according to Schaltzustand, is naturally no Topic.

6 kB
Hochgeladen:02/11/08
Downloadcounter212
Download
 
Gruß Thomas
Windows XP SP2, XProfan X2
02/11/08  
 




Georg
Bernhardt
Hello

has everything worked with Button, Bitmap and DLL.thanks

Georg
 
XProfan 10
02/11/08  
 



here's too yet what
CompileMarkSeparation
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> END
 
02/11/08  
 




Dietmar
Horn

Topic Button:
I such yet after a Solution for Button vertically with text, but not whom Text of supra down. transparency have I yet only with the type *.Ico hinbekommen. The could I but not to that rectangle verbiegen.


Hello Thomas,

because yet To your question yet no response-Posting come is, suspect I time, that not only I To dämlich be, circa your eigentliches border To understand. Perhaps could You have the once so (circa)formulieren, that too I kapiere, what it you really goes? thereafter can you here with on safety grenzender probability weitergeholfen go.

Greeting
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:  [...] 
02/12/08  
 




Thomas
Freier
Hello Dietmar,

the could so his, therefore once more The question in the Klartext:
with MCopyBmp 10, 10 - 100, 100 > 50, 50; -1 can we to determine, which colour as transparent to examine is.
is the too possible, if a *.bmp on a Button should?
I faith me remind to, that it with *.gif and transparency neither goes.
or?

but on this place another Thank you for MMJ-Quellcodesammlung.
Schade, I have unfortunately no Verlinkung on this pages found or in unmittelbarer sew the Freeware Profan 6.6 . she's it worth!
 
Gruß Thomas
Windows XP SP2, XProfan X2
02/13/08  
 




Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

13.256 Views

Themeninformationen



Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie