Can`t get menus to work. I can close the window, but menus don`t react.
Nearly the same code works with B3DSDK.
Edit: There is something wrong with constants: if i replace the integers 800, 600 in OpenDBWnd(0,0,800, 600,32,#GDK_Window_BorderLess ,WindowID(0)) with #screenwidth = 800
#screenheight = 600 then i get another result.
Code in PureGDK:
Code: Select all
#screenwidth = 800
#screenheight = 600
OpenWindow(0,0,0,#screenwidth,#screenheight,"Container Window", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered | #PB_Window_Invisible)
hDBWnd=OpenDBWnd(0,0,800, 600,32,#GDK_Window_BorderLess ,WindowID(0))
;CreateGadgetList (WindowID (0))
If CreateMenu(0, (WindowID (0)))
MenuTitle("Project")
MenuItem(0, "New")
MenuItem(1, "Quit")
MenuTitle("Objects")
MenuItem(2,"Load...")
MenuTitle("Sky")
MenuItem(3,"Load SkyBox...")
MenuItem(4,"Load SkyDome...")
MenuTitle("Lights")
MenuItem(5,"Change Ambient Light...")
MenuTitle("Textures")
MenuItem(6,"Load Texture...")
MenuTitle("Particle")
MenuItem(7,"New Particles...")
MenuTitle("About")
MenuItem(8, "About...")
EndIf
; Unhide PureBasic window container
HideWindow(0,0)
; Don't lose focus to the new DarkBasic window
SetForegroundWindow_(WindowID(0))
; Do something cool
dbMakeObjectCube(1,3)
dbScaleObject(1,35,35,35)
dbPositionObject(1,-1.65,1.3,0)
Repeat
Delay(1)
x.f+0.1: y.f+0.3: z.f+0.4
dbRotateObject(1,x.f,y.f,z.f)
EventID = WindowEvent()
If EventID = #PB_Event_Menu ; ToolBar are acting as menu
Select EventMenu()
Case 1 ; Quit
End
Case 2
StandardFile$ = "C:\" ; anfänglichen Pfad + Dateiname festlegen
; Mit dem nächsten String werden die Pattern (mit "|" als Trennzeichen) für anzuzeigende
; Dateitypen festgelegt:
; Erster: "Text (*.txt)" als Name, ".txt" und ".bat" als erlaubte Dateiendungen
; Zweiter: "PureBasic (*.pb)" als Name, ".pb" al erlaubte Dateiendung
; Dritter: "Alle Dateien (*.*) als Name, "*.*" als erlaubte Dateiendung, gültig für alle Dateien
Pattern$ = "B3D (*.b3d)|*.b3d|X (*.x)|*.x|3DS (*.3ds)"
Pattern = 0 ; wir verwenden den ersten von drei möglichen Pattern als Standard
file$ = OpenFileRequester("Bitte Datei zum Laden auswählen", StandardFile$, Pattern$, Pattern)
index = SelectedFilePattern()
If file$
;entity=bbLoadAnimMesh (file$)
;bbMoveEntity (entity, 0, 0, 100)
Else
MessageRequester("Information", "Der Requester wurde abgebrochen.", 0)
EndIf
EndSelect
EndIf
dbSync()
Until WindowEvent()=#WM_CLOSE
End
This is with B3DSDK and works fine:
Code: Select all
XIncludeFile "blitz3dsdk.pbi"
;EnableExplicit
#screenwidth = 800
#screenheight = 600
window = OpenWindow (#PB_Any, 0, 0, #screenwidth, #screenheight, "Blitz3D in a PB Window", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered)
;CreateGadgetList (WindowID (window))
If CreateMenu(0, (WindowID (window)))
MenuTitle("Project")
MenuItem(0, "New")
MenuItem(1, "Quit")
MenuTitle("Objects")
MenuItem(2,"Load...")
MenuTitle("Sky")
MenuItem(3,"Load SkyBox...")
MenuItem(4,"Load SkyDome...")
MenuTitle("Lights")
MenuItem(5,"Change Ambient Light...")
MenuTitle("Textures")
MenuItem(6,"Load Texture...")
MenuTitle("Particle")
MenuItem(7,"New Particles...")
MenuTitle("About")
MenuItem(8, "About...")
EndIf
; Blitz3D Setup...
bbSetBlitz3dHWND (WindowID (window))
bbBeginBlitz3D ()
bbGraphics3D (#screenwidth, #screenheight, 0, #GFX_WINDOWED)
; Create Entities...
cam = bbCreateCamera ()
cube = bbCreateCube ()
bbEntityColor(cube, 255, 0, 0)
lite = bbCreateLight ()
;bbCreatePlane()
;Position Entities...
bbMoveEntity (cube, 0, 0, 5)
bbMoveEntity (lite, -10, 5, -2)
bbPointEntity (lite, cube)
AddKeyboardShortcut(window, #PB_Shortcut_Up, 100)
AddKeyboardShortcut(window, #PB_Shortcut_Down, 101)
AddKeyboardShortcut(window, #PB_Shortcut_Left, 102)
AddKeyboardShortcut(window, #PB_Shortcut_Right, 103)
AddKeyboardShortcut(window, #PB_Shortcut_R, 104)
Repeat
bbTurnEntity (cube, 0.2, 0.2, 0.2)
EventID = WindowEvent()
If EventID = #PB_Event_Menu ; ToolBar are acting as menu
Select EventMenu()
Case 1 ; Quit
bbEndBlitz3D ()
End
Case 2
StandardFile$ = "C:\" ; anfänglichen Pfad + Dateiname festlegen
; Mit dem nächsten String werden die Pattern (mit "|" als Trennzeichen) für anzuzeigende
; Dateitypen festgelegt:
; Erster: "Text (*.txt)" als Name, ".txt" und ".bat" als erlaubte Dateiendungen
; Zweiter: "PureBasic (*.pb)" als Name, ".pb" al erlaubte Dateiendung
; Dritter: "Alle Dateien (*.*) als Name, "*.*" als erlaubte Dateiendung, gültig für alle Dateien
Pattern$ = "B3D (*.b3d)|*.b3d|X (*.x)|*.x|3DS (*.3ds)"
Pattern = 0 ; wir verwenden den ersten von drei möglichen Pattern als Standard
file$ = OpenFileRequester("Bitte Datei zum Laden auswählen", StandardFile$, Pattern$, Pattern)
index = SelectedFilePattern()
If file$
entity=bbLoadAnimMesh (file$)
bbMoveEntity (entity, 0, 0, 100)
Else
MessageRequester("Information", "Der Requester wurde abgebrochen.", 0)
EndIf
Case 100
bbMoveEntity (entity, 0, 0, 0.1)
Case 101
bbMoveEntity (entity, 0, 0, -0.1)
Case 102
bbMoveEntity (entity, -0.1, 0, 0)
Case 103
bbMoveEntity (entity, 0.10, 0, 0)
Case 104
bbTurnEntity (entity, 0, 1.0, 0)
EndSelect
EndIf
bbRenderWorld ()
bbFlip ()
Until EventID = #PB_Event_CloseWindow ; If the user has pressed on the close button
bbEndBlitz3D ()
End
Athlon X2 7850 - Geforce 8800 GTS 640mb - 8 GB Ram - Vista Home Premium 64 bit SP2