 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 21.02.2008, 12:52 Titel: Excel-VBA -> FBX-Screen |
|
|
Morgen!
Wahrscheinlich strapaziere ich das Thema mal wieder zum äußersten
Ich finds aber ganz interessant:
Ich suche nach einem Weg in (Excel)VBA einzelne Pixel zu setzen. Also ein Bild aufzubauen... Über Sinn und Unsinn kann man mal wieder streiten..
Habe versucht den Ansatz von
http://fsr.sourceforge.net/forum/viewtopic.php?t=19&sid=8c25df5170e15d1c96e5fd24415320ed
so abzuwandeln das mir vba ein screen öffnet. Dafür habe ich es folgender Maßen abgewandelt:
Code: |
' fbxclone.bas
' fbc -dylib fbgfxclone.bas
#INCLUDE ONCE "windows.bi"
#INCLUDE ONCE "win/ole2.bi"
'' notice the mangling method, it must be "windows-ms" OR VB won't find ANY FUNCTION
EXTERN "windows-ms"
sub clone_screenres (w as integer,h as integer,depth as integer=32,pages as integer=0,f as integer=0) export
screenres w,h,depth,pages,f
end sub
sub clone_screencontrol (what as integer,byref p1 as integer,byref p2 as integer) export
screencontrol what,p1,p2
end sub
sub clone_print (byref value as string) export
print value
end sub
sub clone_screenclose () export
if screenptr then screen 0
end sub
sub clone_sleep (ms as integer=-1,flag as integer=-1) export
if ms=-1 and flag=-1 then
sleep
elseif flag=-1 then
sleep ms
else
sleep ms,flag
end if
end sub
sub clone_windowtitle (byref title as string) export
windowtitle title
end sub
sub clone_cls (n as integer=-1) export
if n=-1 then
cls
else
cls n
end if
end sub
' add here all your needs
' imagecreate/destroy
' inkey, nultykey, getkey ...
' pset, line, circle,
' put, get ...
' sleep, view, window ...
' makecurent for OpenGL
end extern
|
(Die datei fbxclone.bas habe ich dann mit "fbc -dylib fbgfxclone.bas" kompiliert)
Im VBA-Projekt habe ich ein Userform und einen Commandbutton erstellt.
Der Quelltext des Userforms sieht dann so aus:
Code: |
Private Declare Sub clone_screenres Lib "C:\Programme\FreeBASIC\fbxclone.dll" (w As Integer, h As Integer, depth As Integer, pages As Integer, f As Integer)
Private Declare Sub clone_sleep Lib "C:\Programme\FreeBASIC\fbxclone.dll" (ms As Integer, flag As Integer)
Private Sub CommandButton1_Click()
clone_screenres 300, 300, 32, 1, 0
clone_sleep -1, -1
End Sub
|
Jetzt hab ich eigentlich erwartet das sich etwas tut wenn ich auf CommandButton1 clicke.. aber ehrlich, da tut sich nüx...
Habe auch schon testweise eine Funktion in die DLL eingefügt die mir einen einfachen integer-wert nach vba zurückgibt. Das klappt auch einwandfrei! Würde also wahrscheinlich nicht an der Sub declaration liegen..
Weiss da jemand weiter? |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 21.02.2008, 14:09 Titel: |
|
|
booooh eeeey....
da hast du dir aber was vorgenommen
aus Excel heraus mit VBA ein Fenster mit fbgfx erstellen...
Ohne mich jetzt in Joshys 'fbgfxclone.dll' vertieft zu haben, fiel mir auf, dass er seine dll mit extern "c" versieht (klar, in FB werden einige Funktonen der C-Runtime gebraucht). Kommt da keine Fehlermeldung, dass diese C-Funktionen nicht erreichbar sind????
In der dll für VBA wird extern "windows-ms" verwendet, verträgt sich das miteinander???? _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 21.02.2008, 14:57 Titel: |
|
|
@Volta:
Keine Ahnung .. es passiert einfach nur rein gar nichts
deklariere ich die dll mit extern "c" und binde diese dll in ein freebasic-code ein funktionierts einwandfrei... (Also damit lässt sich der Screen der DLL öffnen) |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|