ApphWnd - Jawoll sicher und Plattformunabhängig

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Der Eisvogel

Betreff: ApphWnd - Jawoll sicher und Plattformunabhängig

BeitragMo, Mai 31, 2010 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
Ich stelle euch hiermit die Funktion ApphWnd() zur Verfügung. Diese ersetzt den Befehl SystemProperty("ApphWnd"). Nun könnt ihr ohne Probleme auf euer Fenster-Handle zugreifen. Jetzt kommt das beste: Das ist auch noch Plattformunabhängig. Ich weis nicht, was man mit dem Handle des fenster auf Linus oder OS X machen kann, aber wer weiß. Ich brauche das ganze für Windows, denn da kann man sehr viel mit einem Fenster machen, wenn man das Handle hat. Bisher war es nicht möglich dieses Handle sicher zu ermitteln. GetActiveWindow() aus der WinAPI sollte dabei behilflich sein, aber was passiert, wenn das programm im Hintergrund startet? Dann ist nix mehr mit ActiveWindow(). Das ist nun Schnee von Gestern.
Hier die Funktion:

BlitzMax: [AUSKLAPPEN]
Function ApphWnd:Int(g:TGraphics)
If g = Null Then Return Null

Local GraphicsDevice:TGraphics
If g.Driver() <> GLGraphicsDriver() Then
GraphicsDevice = TMax2DGraphics(g)._graphics
Else
GraphicsDevice = g
EndIf

Select g.Driver()
Case GLGraphicsDriver(), GLMax2DDriver()
Return Int Ptr(TGLGraphics(GraphicsDevice)._context)[8]
Case D3D7Max2DDriver()
Return TD3D7Graphics(GraphicsDevice)._hWnd
Case D3D9Max2DDriver()
Return TD3D9Graphics(GraphicsDevice)._hWnd
End Select
End Function


Es ist zwar nur ein kleiner Code, aber dessen Erschaffung hat mich etwas länger in Anspruch genommen.
Die Funktion erwartet als Parameter den Rückgabewert von Graphics bzw. CreateGraphics. Leider kann man die Funktion nicht ohne Parameter aufrufen, sodass das aktuelle mit SetGraphics gesetzte Handle benutzt wird, da die Variable dessen Inhalt man dafür benötigt Private ist. Ich habe leider auch keine Funktion gefunden, die diese zurück gibt. Man könnte natürlich etwas am Module verändern, aber dafür ist der Aufwand glaube ich zu groß.

Hier ein Anwendungsbeispiel:
BlitzMax: [AUSKLAPPEN]
SuperStrict

Local hWnd:Int = ApphWnd(Graphics 640,480)

DrawText hWnd,10,10
Flip 0

WaitKey
End


Ich hoffe das hilft euch weiter.
Viel Spaß damit.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

Macintosh

BeitragMo, Mai 31, 2010 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Unter OSX kann man (soweit ich weis) nichts mit dem Handle (zumindest nicht in Bmax) anfangen.
Für windows aber sicher sehr praktisch! :)

Silver_Knee

BeitragMo, Mai 31, 2010 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
gibt es unter osx nichts dll-artiges?
 

Macintosh

BeitragDi, Jun 01, 2010 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich wei, nein.
Aber man bekommt die fenster auch über cocoa.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group