"Blitz Runtime Class" und WinAPI

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

LukasBanana

Betreff: "Blitz Runtime Class" und WinAPI

BeitragSo, Jun 06, 2010 11:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich habe hier gelesen, dass man mit FindWindow("Blitz Runtime Class", 0) auf das Standard Fenster von Blitz3D zu greifen kann (keine Ahnung ob das in BMax oder BPlus auch so ist).
Ich frage mich, wie kann ich in meiner Dll die ich in C++ schreibe und dann als Userlib in B3D verwende, auf dieses Fenster so zugreifen, um einen "Print" Befehl zu simulieren.
Das heißt, ich will über meine C++ Dll auf die BB 'Konsole' Textausgaben drucken.
Das Fenster erhalte ich bereits mit "FindWindow", das klappt wunder bar. Welche WinAPI muss man dann aufrufen, um eine Ausgabe hervorzurufen?
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana
 

Rufus Serano

BeitragSo, Jun 06, 2010 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem FindWindow funktioniert aber nicht immer. Es ist ja durchaus möglich, dass jemand 2 BlitzBasic Programme am laufen hat. Dann kann es nämlich sein, dass nicht das eigene Fenster, sondern das Fenster des anderen Programs gefunden wird. Zudem hat Blitz auch einen eigenen Befehl dafür:
SystemProperty("AppHWND")
Was nun den Print-Befehl angeht... Einen Befehl zu finden, der nur von der C++ seite ausgeführt wird und direkt im BB-Fenster ausgegeben wird, halte ich für schwierig. Was mir einfacher erscheint ist entweder ein UDP-Stream (C++ Sender; BB-Empfänger) oder, wenn man die Motivation dazu hat, NamedPipes (wozu es glaub ich hier irgendwo schonmal ne dll gab...).

MfG

Silver_Knee

BeitragSo, Jun 06, 2010 22:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Also das wäre die Funktionsweise in B3D, B+ (SystemProperty("Direct3D7")="") hat nur stdout in ner DosBox
BlitzBasic: [AUSKLAPPEN]
Global Locate_x,Locate_y
Function Locate(x,y);Overwrite
Locate_x=x
Locate_y=y
End Function

Function Print(txt="");Overwrite
If Locate_y+FontHeight()>GraphicsHeight()
CopyRect 0,0,GraphicsWidth(),GraphicsHeight(),0,Locate_y+FontHeight()-GraphicsHeight()
Local Color=ColorBlue()+ColorGreen()*$100+ColorRed()*$10000
Color 0,0,Cls_color
Rect 0,GraphicsHeight()-FontHeight(),GraphicsWidth(),FontHeight()
Color 0,0,Color
Locate_y=GraphicsHeight()
EndIf
Text Locate_x,Locate_y,txt
Locate_y=Locate_y+FontHeight
End Function

Global Cls_Color
Function ClsColor(red,green,blue);OverWrite
Cls_Color=blue+green*$100+red*$10000
End Function

Function Cls();OverWrite
Local Color=ColorBlue()+ColorGreen()*$100+ColorRed()*$10000
Color 0,0,Cls_Color
Rect 0,0,GraphicsWidth(),GraphicsHeight()
Color 0,0,Color
End Function

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group