der code ist noch recht simple. Aber er ist für 3 Monitore gedacht. Daher fileicht an einigen stellen komisch
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; Test 001, StartUp, MultiDesk Unterstützung
;
; (c) 2013 - TFT Optima-Code
;
; ------------------------------------------------------------
;
#CameraSpeed = 1
Define.f KeyX, KeyY, MouseX, MouseY
Procedure UnHideAccessMenu(hwnd.l=0)
Protected ingStyle.l
lngStyle = GetWindowLong_(WindowID(hwnd), #GWL_STYLE)
lngStyle = lngStyle | #WS_SYSMENU
SetWindowLong_(WindowID(hwnd), #GWL_STYLE, lngStyle)
SetWindowPos_(WindowID(hwnd), #HWND_TOP, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE |#SWP_DRAWFRAME )
EndProcedure
Procedure HideAccessMenu(hwnd.l=0)
Protected ingStyle.l
lngStyle = GetWindowLong_(WindowID(hwnd), #GWL_STYLE)
lngStyle = lngStyle &~ #WS_SYSMENU
SetWindowLong_(WindowID(hwnd), #GWL_STYLE, lngStyle)
SetWindowPos_(WindowID(hwnd), #HWND_TOP, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE |#SWP_DRAWFRAME )
EndProcedure
Procedure SetWinTransparency(win,level)
If level>=0 And level<101
hLib = LoadLibrary_("user32.dll")
If hLib
adr = GetProcAddress_(hLib,"SetLayeredWindowAttributes")
If adr
SetWindowLong_(WindowID(win),#GWL_EXSTYLE,GetWindowLong_(WindowID(win),#GWL_EXSTYLE)|$00080000) ; #WS_EX_LAYERED = $00080000
CallFunctionFast(adr,WindowID(win),0,255*level/100,2)
EndIf
FreeLibrary_(hLib)
EndIf
EndIf
EndProcedure
OpenConsole()
If InitEngine3D()
UsePNGImageDecoder()
Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
InitSprite()
InitSprite3D()
InitKeyboard()
InitMouse()
AnzDesk=ExamineDesktops()
PrintN("Sie haben "+Str(AnzDesk)+" Desktops.")
For i=1 To AnzDesk
ScreenX = DesktopWidth(i-1)
ScreenY = DesktopHeight(i-1)
ScreenD = DesktopDepth(i-1)
ScreenF = DesktopFrequency(i-1)
PrintN("Desktop "+i+" ( "+ScreenX+"/"+ScreenY+"/"+ScreenD+"/"+ScreenF+" )")
Next
PrintN("Home directory : "+GetHomeDirectory())
PrintN("Es stehen "+ Str(MemoryStatus(#PB_System_FreePhysical )/1024/1024) +" MByte Ram zur verfügung")
;FlipRate = 16;1000/ScreenF
;PrintN("FlipRate "+Str(FlipRate))
;sxPos=-ScreenX
Window1=OpenWindow(#PB_Any, sxPos, 0, ScreenX , ScreenY, "Optima Code , TFT 2013" , #PB_Window_BorderLess)
Screen = OpenWindowedScreen(WindowID(Window1), 0, 0, ScreenX , ScreenY, 0, 0, 0, #PB_Screen_WaitSynchronization )
Window2=OpenWindow(#PB_Any,sxPos+20,20,400,300,"teset")
HideAccessMenu(Window2)
StickyWindow(Window2, 1)
SetWinTransparency(Window2,100)
SetWindowTitle(Window2,"SystemInfo")
Window3=OpenWindow(#PB_Any,sxPos+20,380,400,300,"teset")
HideAccessMenu(Window3)
StickyWindow(Window3, 1)
SetWinTransparency(Window3,100)
SetWindowTitle(Window2,"Edit")
SetActiveWindow(Window1)
DisableWindow(Window2, 1)
DisableWindow(Window3, 1)
AmbientColor(RGB(255, 255, 255)) ; Gray 'HUD' like color
Cam1=CreateCamera(#PB_Any, 0, 0, 100, 100) ; Front camera
MoveCamera(Cam1,0,0,1000,#PB_Absolute)
RotateCamera(Cam1,0,0,0)
CameraBackColor(Cam1, RGB(0, 0, 0))
CameraFOV(Cam1, 20)
Mesh=CreateCube(#PB_Any,1) ;CreateCube(#PB_Any,10) CreateSphere(#PB_Any, 2
Texture=LoadTexture(#PB_Any,"fenster01.png"): If Texture=0 :End :EndIf
StartDrawing(TextureOutput(Texture))
DrawText(10,10,"Test",RGB(255,255,255),RGB(63,63,63))
StopDrawing()
Material=CreateMaterial(#PB_Any,TextureID(Texture))
MaterialBlendingMode(Material, #PB_Material_Add ); #PB_Material_Add #PB_Material_AlphaBlend #PB_Material_Color
;MaterialCullingMode(Material , #PB_Material_NoCulling ); #PB_Material_NoCulling #PB_Material_ClockWiseCull #PB_Material_AntiClockWiseCull
Entity=CreateEntity(#PB_Any,MeshID(Mesh),MaterialID(Material),0,0,0,0)
MoveEntity(Entity,0,0,0)
ScaleEntity(Entity,427,357,1)
;HideEntity(Entity,1)
For i2 = -5 To 5
For i1 = -5 To 5
For i = -5 To 5
; k=CopyEntity(Entity, #PB_Any)
;MoveEntity(k,i*20,i1*20,i2*20)
Next
Next
Next
;FreeEntity(entity)
sp=LoadSprite(#PB_Any,"Data/hand1.png",#PB_Sprite_Texture| #PB_Sprite_AlphaBlending )
If sp = 0 : End : EndIf
sp3D = CreateSprite3D(#PB_Any,sp)
ZoomSprite3D(sp3D,32,32)
;FPS_ControllTimer=ElapsedMilliseconds()+ FlipRate
Repeat
MouseB = 0
If Fokus = 0
If ExamineMouse()
MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
MousePosX = MouseX()
MousePosY = MouseY()
If MouseButton(1) : MouseB = 1 : EndIf
If MouseButton(2) : MouseB = 2 : EndIf
EndIf
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_A)
KeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_D)
KeyX = #CameraSpeed
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_W)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_S)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
EndIf
If KeyboardReleased(#PB_Key_Tab)
Fokus = Fokus + 1 : If Fokus = 2 : Fokus = 0 : EndIf
If Fokus = 1
SetActiveWindow(Window2)
DisableWindow(Window2, 0)
DisableWindow(Window3, 0)
EndIf
ReleaseMouse(Fokus):
EndIf
Else
MouseX=0.0
MouseY=0.0
KeyX=0.0
KeyY=0.0
EndIf
AWin=GetActiveWindow()
Repeat
EventCount=0
Event = WindowEvent()
If Event>0
xPos = EventlParam() & $FFFF ; hole das Low Word (16 Bit)
yPos = EventlParam()>>16 ; hole das High Word (16 Bit)
fwKeys = EventwParam() ; hole die Flags ggf. gedrückter Tasten
win = EventWindow()
EndIf
Select Event
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #WM_KEYDOWN
Select fwKeys
Case #VK_ESCAPE
Quit=1
Case #VK_TAB
If Fokus = 1
Fokus = Fokus + 1 : If Fokus = 2 : Fokus = 0 : EndIf
If Fokus = 0
SetActiveWindow(Window1)
DisableWindow(Window2, 1)
DisableWindow(Window3, 1)
EndIf
ReleaseMouse(Fokus)
EndIf
EndSelect
PrintN("#WM_KEYDOWN "+Str(Event)+" "+Str(fwKeys)+" "+Str(win)) : EventCount=1
Case #WM_KEYUP
PrintN("#WM_KEYUP "+Str(Event)+" "+Str(fwKeys)+" "+Str(win)): EventCount=1
Case #WM_KEYDOWN
PrintN("#WM_KEYDOWN "+Str(Event)+" "+Str(fwKeys)): EventCount=1
Case #WM_SYSKEYUP
PrintN("#WM_SYSKEYUP "+Str(Event)+" "+Str(fwKeys)): EventCount=1
Case #WM_SYSKEYDOWN
PrintN("#WM_SYSKEYDOWN "+Str(Event)+" "+Str(fwKeys)): EventCount=1
Case #WM_CHAR
PrintN("#WM_CHAR "+Str(Event)+" "+Chr(fwKeys)): EventCount=1
Case #WM_MOUSEMOVE
;PrintN("#WM_MOUSEMOVE "+Str(Event)+" x:" + Str(xPos) + " y:" + Str(yPos)+" "+Str(win))
EventCount=1
If GetActiveWindow() = Window1
MousePosX=xPos
MousePosY=yPos
Else
MousePosX=-1
MousePosY=-1
EndIf
Case 160
;PrintN("Mouse bewegung über der Titelzeile "+Str(Event)+" x:" + Str(xPos) + " y:" + Str(yPos)): EventCount=1
Case #WM_MOUSEWHEEL
PrintN("WM_MOUSEWEEL "+Str(Event)+" "+StrF(fwKeys)): EventCount=1
Case #WM_LBUTTONDOWN
PrintN("WM_LBUTTONDOWN "+Str(Event)): EventCount=1
MouseB = 1
If GetActiveWindow() = Window1
MousePosX=xPos
MousePosY=yPos
Else
MousePosX=-1
MousePosY=-1
EndIf
Case #WM_LBUTTONUP
PrintN("WM_LBUTTONUP "+Str(Event)): EventCount=1
Case #PB_Event_LeftClick
PrintN("PB_Event_LeftClick "+Str(Event)+" "+StrF(fwKeys)+" "+Str(win)): EventCount=1
Case #PB_Event_LeftDoubleClick
PrintN("PB_Event_LeftDoubleClick "+Str(Event)): EventCount=1
MouseB = 1
Case #WM_RBUTTONDOWN
PrintN("WM_RBUTTONDOWN "+Str(Event)): EventCount=1
Case #WM_RBUTTONUP
PrintN("WM_RBUTTONUP "+Str(Event)): EventCount=1
Case #PB_Event_RightClick
PrintN("PB_Event_RightClick "+Str(Event)): EventCount=1
Case #PB_Event_ActivateWindow
PrintN("PB_Event_ActivateWindow "+Str(Event)+" "+StrF(fwKeys)): EventCount=1
Case #PB_Event_DeactivateWindow
PrintN("PB_Event_DeactivateWindow "+Str(Event)+" "+StrF(fwKeys)): EventCount=1
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_EventType_LeftClick : Debug "Klick mit der linken Maustaste"
Case #PB_EventType_RightClick : Debug "Klick mit der rechten Maustaste"
Case #PB_EventType_LeftDoubleClick : Debug "Doppelklick mit der linken Maustaste"
Case #PB_EventType_RightDoubleClick : Debug "Doppelklick mit der rechten Maustaste"
EndSelect
EndSelect
Case #WM_CLOSE
Quit = 1
EndSelect
If (Event>0 Or Event<0 ) And EventCount=0
PrintN("Event "+Str(Event)+" Type "+Str(EventType())+" x:" + Str(xPos) + " y:" + Str(yPos) + " Keys: " + fwKeys)
EndIf
Until Event = 0
ent=0
If Fokus = 0
RotateCamera(Cam1, MouseY, MouseX, 0, #PB_Relative)
MoveCamera (Cam1, KeyX, 0, KeyY)
Else
If MouseB=1 And MousePosX>-1 And MousePoxY>-1 And GetActiveWindow() = Window1
;PrintN(Str(MouseX())+"/"+Str(MouseY()))
ent=MousePick(Cam1, MousePosX,MousePosY)
If ent>0
FreeEntity(ent)
EndIf
EndIf
If ent <>0
entold=ent
PrintN(Str(ent))
EndIf
EndIf
RenderWorld()
;While FPS_ControllTimer>ElapsedMilliseconds()
;Delay(1)
;Wend
;FPS_ControllTimer=ElapsedMilliseconds()+FlipRate
; DisplaySprite(sp, MousePosX, MousePosY) ; Hintergrundbild darstellen
Start3D()
DisplaySprite3D(sp3D, MousePosX,MousePosY, 255)
Stop3D()
FlipBuffers()
Until Quit = 1
EndIf
Delay (2000)
End