Grafik auf Buttons?
Übersicht

![]() |
GarfieldBetreff: Grafik auf Buttons? |
![]() Antworten mit Zitat ![]() |
---|---|---|
bisher habe ich im Forum nichts darüber gefunden, außer vom Januar in dem Shadow mitteilt, das auch er keinen Trick kennt.
Vieleicht hat es ja inzwischen jemand geschafft, auf einen Button eine Bitmap zu legen, ohne das der Button seine Funktion verliert? leider kann man ja auch nicht mehrere Toolsbars machen, das wäre ja eine Lösung...... |
||
BlitzPlus|BMax|BMax-GUI -- Sony VAIO Win7 * MacBookPro Sierra |
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn wir schon grad über buttons reden kannst du mir gleich mal erklären wie man die dinger überhaubt abfragt. | ||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
@dominik
Code: [AUSKLAPPEN] ;Fenster erstellen
Startwindow = CreateWindow("Startwindow",50,50,700,545,0) ;Button erstellen Button_1 = CreateButton ("Klick mich NR 1",160,15,150,25,Startwindow) Button_2 = CreateButton ("Klick mich NR 2",160,150,150,25,Startwindow) UpdateWindowMenu Startwindow Repeat Ergebnis = WaitEvent() Select Ergebnis Case $803 End Case $401 If EventSource() = Button_1 Then ;button wurde geklickt!!!! ;was soll nun passieren Notify"der Button NR 1 wurde geklickt" End If If EventSource() = Button_2 Then ;button wurde geklickt!!!! ;was soll nun passieren Notify"der Button NR 2 wurde geklickt" End If End Select Forever Ich denke das das Beispiel sich selbst erklärt! |
||
[BB2D | BB3D | BB+]
|
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja danke. | ||
![]() |
Garfield |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzPlus|BMax|BMax-GUI -- Sony VAIO Win7 * MacBookPro Sierra |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es muss doch eine Möglichkeit (z.B. über WinAPI) geben, es haben doch soviele Programme Buttons mit Grafiken?!?! | ||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
ql:CreateCanvas
Oder suche im Forum nach "beskinnen".. Ich glaub, da gibts ne DLL, die dir das ganze Fenster beskinnt und du hast dann Designmäßig alle Freiheit der Welt. mfG, Christoph. PS: Irgendwer könnte sich darüber aufregen, dass du ständig Threads pusht... Aber immerhin zeugt das davon, dass du auch mal nach etwas suchst.... |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Geht:
Code: [AUSKLAPPEN] Function CreateImgButton( ico$, x, y, w, h, group, push = 0 )
;============================================================================================================== ; Erstellt ImageButton. ico$ sollte eine Datei vom Typ ICO sein damit das Bild transparent dargestellt wird. ; Wird 'Push' mit 2 angegeben, wird ein Toggle Button erstellt. ;============================================================================================================== Local button = CreateButton( "", x, y, w, h, group, push ) Local BM_SETIMAGE = $F7 Local IMAGE_ICON = $1 Local GWL_STYLE = -16 Local LR_DEFAULTSIZE = $40 Local LR_LOADFROMFILE = $10 Local BS_ICON = $40 Local SPI_GETICONMETRICS = 45 Local ICONMETRICS = CreateBank( 20 ) Local BS_PUSHLIKE = $1000 If w < 32 Then w = 16 Else w = 32 Local hbutton = QueryObject( button, 1 ) ;--> Erstelle Toggle Button If push > 0 Then api_SetWindowLong( hbutton, GWL_STYLE, api_GetWindowLong( hbutton, GWL_STYLE ) Or BS_PUSHLIKE ) End If Local icon = api_LoadImage( 0, ico$, IMAGE_ICON, w, w, LR_LOADFROMFILE Or LR_DEFAULTSIZE ) api_SetWindowLong hbutton, GWL_STYLE, api_GetWindowLong( hbutton, GWL_STYLE ) + BS_ICON Local oldimage = api_SendMessage( hbutton, BM_SETIMAGE, IMAGE_ICON, icon ) If oldimage api_DeleteObject( oldimage ) Return button End Function Die API Aufrufe musste dir mal selbst raussuchen, sollte aber kein Thema sein. Have Fun |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie heißt denn die dll? Würde mich sehr über eine Antwort feuen. | ||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die DLL ist die USER32.DLL
Eine Auflistung aller Befehle (decls) müsste hier oder im englischen Forum zu finden sein. |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die DLLs kannst du ganz leicht selbst herausfinden. Es gibt mehrere Webseiten / Programme dafür:
1. MSDN, die "offizielle" WinAPI-Seite Gib dort einfach in der Suche ( links oben ) den Namen der Funktion ein ( z.B. SetWindowLong ) und du bekommst eine ausführliche Beschreibung des Befehls. Ganz unten steht auch die DLL, in der die Funktion drin ist. 2. Lade dir den API-Viewer von ActiveVB runter http://www.activevb.de/rubrike...iewer.html 3. Suche direkt auf ActiveVB nach dem Befehl http://www.activevb.de/rubrike...talog.html Wenn du dort nach SetWindowLong suchst, bekommst du Folgendes: Code: [AUSKLAPPEN] Declare Function SetWindowLong Lib "user32.dll" _
Alias "SetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Und schon weißt du, dass SetWindowLong in der "user32.dll" drin ist. ![]() |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank, das wird mir sicherlich bis an mein Lebensende eine große Hilfe sein.
[nein das ist nicht ironisch gemeint, ich meine es wirklich so, vielen Dank] Guten Rutsch DjDETE |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei mir kommt da leider immer eine Fehlermeldung von Windows: blitzcc.exe hat ein Problem festgestellt und muss beendet werden...
Wäre toll wenn mir jemand helfen könnte. |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
mach mal Debug Modus an und sag, was dann kommt, und vor allem an welcher Stelle die Fehlermeldung kommt. | ||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe gerade was herausgefunden:
Wenn ich um dass Resultat zu sehen das mache: graphics 800,600 repeat until keydown(1) dann kommt die Windowsfehlermeldung, obwohl der Debugger an ist, und wenn ich dies mache: waitkey() dann kommt zwar keine Fehlermeldung aber eine Grafik ist auf dem Button auch nicht zu sehen... Danke im Vorraus, DjDETE |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kannst du bitte mal den kompletten Code zeigen? | ||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Klar:
Code: [AUSKLAPPEN] window1=CreateWindow("",100,100,200,200)
createimgbutton("icon.ico",30,30,50,50,window1,0) Function CreateImgButton( ico$, x, y, w, h, group, push = 0 ) ;============================================================================================================== ; Erstellt ImageButton. ico$ sollte eine Datei vom Typ ICO sein damit das Bild transparent dargestellt wird. ; Wird 'Push' mit 2 angegeben, wird ein Toggle Button erstellt. ;============================================================================================================== Local button = CreateButton( "", x, y, w, h, group, push ) Local BM_SETIMAGE = $F7 Local IMAGE_ICON = $1 Local GWL_STYLE = -16 Local LR_DEFAULTSIZE = $40 Local LR_LOADFROMFILE = $10 Local BS_ICON = $40 Local SPI_GETICONMETRICS = 45 Local ICONMETRICS = CreateBank( 20 ) Local BS_PUSHLIKE = $1000 If w < 32 Then w = 16 Else w = 32 Local hbutton = QueryObject( button, 1 ) ;--> Erstelle Toggle Button If push > 0 Then api_SetWindowLong( hbutton, GWL_STYLE, api_GetWindowLong( hbutton, GWL_STYLE ) Or BS_PUSHLIKE ) End If Local icon = api_LoadImage( 0, ico$, IMAGE_ICON, w, w, LR_LOADFROMFILE Or LR_DEFAULTSIZE ) api_SetWindowLong hbutton, GWL_STYLE, api_GetWindowLong( hbutton, GWL_STYLE ) + BS_ICON Local oldimage = api_SendMessage( hbutton, BM_SETIMAGE, IMAGE_ICON, icon ) If oldimage api_DeleteObject( oldimage ) Return button End Function WaitKey() Bitte, hoffe du kannst mir helfen. |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei mir funktioniert der Code ( getestet mit BlitzMax + MaxGUI ). Da die Fehlermeldung am Ende des Programms kommt, wenn ich das richtig verstanden habe, muss Blitz ein Problem beim "Aufräumen" haben. Benutzt du noch andere Userlibs oder Zugriffe auf die WinAPI? | ||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja! Zum Beispiel ist der hier im Code vorhandene api_deleteoject Befehl aus der gid32.decls. | ||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja! Zum Beispiel ist der hier im Code vorhandene api_deleteoject Befehl aus der gid32.decls.
Und mir ist auch aufgefallen, dass mein Problem nichts mit Graphics, waitkey, etc. zu tun hat, sondern manchmal passiert das eine, ein anderes Mal das Andere... Edit: will mir den niemand helfen??? Edit2: Für Hilfe wäre ich wirklich sehr dankbar!!! |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group