Source/ Codesnippets | | | | | KompilierenMarqueSéparationSource 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
|
| | | | |
| | Georg Bernhardt | comment bekomme Je l' maintenant un Bitmap rein? Habe alles mögliche versucht. ändere je comment beschrieben dans $00000080 ist qui Button weg. qui Bitmap habe je dans Profan.exe avec Ressorceditor eingefügt, bzw dans un DLL et qui aufgerufen avec Drawextbmp erscheint cela bmp sur dem la fenêtre.
Georg |
| | | | |
| | Dietmar Horn | allô Georg,
cela steht doch eigentlich alles bereits im obigen Code. qui le crochet à qui Geschichte ist ici, qui dans qui Community-Babyklappe qui nécessaire Ressourcen malheureusement pas mitgeliefert volonté.
Sowohl dans qui MMJ-Quellcodesammlung comme aussi im XProfan-Manager sommes qui Demo-Codes dagegen courir avec allen nécessaire Ressourcen enthalten.
j'ai Dir cela la fois verkürzt sur une Bitmap-Button umgeschrieben.
Im Anhang findest Du qui fertige EXE avec deux Bitmaps zum Ausprobieren et den Code en supplément.
Salut 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: [...] | 10.02.2008 ▲ |
| |
| | Georg Bernhardt | merci Dietmar,
funktioniert, Habe mais encore cela Problem, dass je qui BMP dans un DLL emballé habe et vous pour Deinem procéder simple pas rauskriege. avec
Dll&=Usedll(SPLITTER.dll) DrawExtBmp DLL&, 115, 20, 20,1
ca va. mais comment peux je qui DLL dans Deinem Code einbinden et puis zugreifen. Babyklappe hat mir aussi pas weitergeholfen
merci |
| | | | |
| | Dietmar Horn | allô Georg,
aussi quelque chose comme findest Du à mehreren se mettre en détails im XProfan-Manager beschrieben.
ici ist qui API LoadImageA Dein ami, avec qui Du zunächst cela Handle des Bitmaps aus qui DLL bestimmst. Anschließend brauchst Du cet négoce seulement encore dem Button per SendMessage zuweisen.
Im modifié Beispiel habe je cela Bitmap OK1.BMP avec dem Manager comme Ressource Bitmap avec dem Bezeichner BMP_1 dans un DLL nommé BITMAP.DLL verfrachtet.
Siehe Anhang avec EXE, PRF et DLL.
Salut 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: [...] | 11.02.2008 ▲ |
| |
| | Georg Bernhardt | merci, nu looft et serait on ici dire mais pas avec meiner DLL mais seulement avec Deiner mais là peux je oui mon Ressourcen reinpacken
Georg |
| | | | |
| | Jörg Sellmeyer | Es wäre, comment toujours, hilfreich, si Du la fois un lauffähiges Stück Code postest (la fenêtre, Einbindung qui Dll, un Button, Dll im Anhang), avec cela on la fois qualifizierte Propositions faire peux. So stochert on seulement im le brouillard rum, là wir oui pas savons, si et quoi pour faute Du peut-être. fais. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 11.02.2008 ▲ |
| |
| | Thomas Freier | Thema Button: je such encore pour einer Solution pour Button senkrecht avec le texte, mais pas den Text de dessus pour unten. Transparenz habe je bisher seulement avec dem Typ *.Ico hinbekommen. qui konnte je mais pas zum Rechteck verbiegen. KompilierenMarqueSéparationdeclare 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 pour Schaltzustand, ist naturellement ne...aucune Thema. |
| | | | |
| | Georg Bernhardt | allô
hat alles geklappt avec Button, Bitmap et DLL.merci
Georg |
| | | | |
| | | ici ist aussi encore quoi KompilierenMarqueSéparationDEF 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
|
| | | | |
| | Dietmar Horn |
Thema Button: je such encore pour einer Solution pour Button senkrecht avec le texte, mais pas den Text de dessus pour unten. Transparenz habe je bisher seulement avec dem Typ *.Ico hinbekommen. qui konnte je mais pas zum Rechteck verbiegen.
allô Thomas,
weil bisher trop Deiner Frage encore ne...aucune Antwort-Posting gekommen ist, vermute je la fois, qui pas seulement je trop dämlich suis, um Dein eigentliches Anliegen trop comprendre. peut-être könntest Du le reste einmal so (um)formulieren, qui aussi je kapiere, worum es Dir eigentlich allez? après peux Dir ici avec à Sicherheit grenzender probabilité weitergeholfen volonté.
Salut 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 | allô Dietmar,
cela pourrait so son, tout autor encore einmal qui Frage im Klartext: chez MCopyBmp 10, 10 - 100, 100 > 50, 50; -1 peut wir bestimmen, quelle la couleur comme transparent anzusehen ist. Ist cela aussi possible, si une *.bmp sur une Button soll? je crois mich erinnern trop peut, dass es avec *.gif et Transparenz aussi pas allez. ou bien?
mais à cette Stelle encore un Dankeschön pour qui MMJ-Quellcodesammlung. tant pis, j'ai malheureusement aucun Verlinkung sur cette Seiten trouvé ou bien dans unmittelbarer Nähe qui Freeware Profan 6.6 . vous ist es wert! |
| | | | |
|
Zum QuelltextOptions du sujet | 13.133 Views |
Themeninformationencet Thema hat 6 participant: |