Blitzsys - PositionWindow

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Eingeproggt

Betreff: Blitzsys - PositionWindow

BeitragMo, Jun 18, 2007 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Mein neues Problem ist einfach und spezifisch zugleich...

Also ich will ein in BlitzPlus Rahmenlos gemachtes Fenster mittels PositionWindow aus der blitzsys bewegen. Dabei fängt das Fenster am Desktop an zu ruckeln. Liegt an meiner Positionsberechnung, nur weiss ich nicht, wie es besser gehen könnte. (Das Problem hätte ich auch bei 2d oder 3d, deshalb -> Allgemein)

Code: [AUSKLAPPEN]

;Beim Laden
winhandle=DLLFindWindow("Mein Titel") ;Auch mit blitzsys, funzt schon

;In der Schleife
altmx=mx : altmy=my
mx=MouseX() : my=MouseY()
;DLLGetWindowX und DLLGetWindowY sind ebenfalls aus der blitzsys
DLLPositionWindow(winhandle,DLLGetWindowX(winhandle)-(altmx-mx),DLLGetWindowY(winhandle)-(altmy-my))


Bitte um Verbesserungen.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jun 19, 2007 0:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Du brauchst da eigendlich nichs selber berechnen, dass kann die BlitzSys (v.1.05) schon alleine. Hier mal ein BeispielCode: [AUSKLAPPEN]
Graphics3D 320,240,0,2
SetBuffer BackBuffer()

camera=CreateCamera()
PositionEntity camera,0,0,-4

TurnEntity CreateLight(),-160,-30,0

cube=CreateCube()
MoveEntity cube,-2,0,0

Include "blitzsys.bb"
If DLLBlitzSysInitialise()<105 RuntimeError("blitzsys.dll nicht gefunden")

Global hWnd=DLLFindBlitzRuntimeHwnd("")
DLLSetWindowZOrder(hWnd,HWND_NOTOPMOST)
DLLSetWindowRgn(hWnd,DLLCreateRectRgn(DLLGetClientAreaX(hWnd),DLLGetClientAreaY(hWnd),DLLGetClientAreaWidth(hWnd),DLLGetClientAreaHeight(hWnd)),True)



While Not KeyHit(1)
 If MouseHit(1) DLLSystemMoveWindow(hWnd)

 TurnEntity cube,0,0,1

 UpdateWorld
 RenderWorld

 Text 20,20,"Window X:      "+DLLGetWindowX(hWnd)
 Text 20,40,"Window Y:      "+DLLGetWindowY(hWnd)
 Text 20,60,"Window Width:  "+DLLGetWindowWidth(hWnd)
 Text 20,80,"Window Height: "+DLLGetWindowHeight(hWnd)

 Flip
Wend

DLLSetWindowRgn(hWnd,0,False)
DLLDeleteObject(iBothcubes)
End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Eingeproggt

BeitragDi, Jun 19, 2007 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke,

Deine Methode funktioniert einwandfrei, ich bediente mich jedoch dieser Funktion: https://www.blitzforum.de/foru...=beskinnen
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jun 19, 2007 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, die Dll habe ich auch schon lange, aber auch ein Problem mit dieser sind folgende Hard-Coded-Variablen

Code: [AUSKLAPPEN]
xoffset=-3
yoffset=-22

Vielleicht hast du dazu schon eine Lösung gefunden, wenn nicht, wirst du feststellen, dass diese Werte bei unterschiedlichen Windowseinstellungen anders lauten müssen. Mit anderen Worten, was bei dir gut aussieht, ist bei jemand anderem wieder ganz verschoben.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

ChristianK

BeitragDi, Jun 19, 2007 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Offsets speichern doch, wie weit der linke obere Pixel des Fensters von der linken oberen Ecke des Client-Bereichs entfernt ist.
Mit der WinAPI-Funktion AdjustWindowRect lässt sich dieser Offset berechnen. Dabei werden auch die Windowseinstellungen und das Theme berücksichtigt.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jun 19, 2007 23:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ich weiß was das offset macht... Das mit ''AdjustWindowRect'' hat mir aber keiner gesagt und ist so nicht im Beispielcode drin, was den Code recht sinnlos macht, da es keine Blitzbefehle sind, und man so recht aufgeschmissen ist. Wenn es mit der API geht, dann ist ja alles wieder gut.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group