requestgraphicsmode.bmx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. Strict
  2. Import MaxGui.Drivers
  3. Repeat
  4. Local w,h,d,r
  5. If Not RequestGraphicsMode( w,h,d,r ) End
  6. Graphics w,h,d,r
  7. DrawText "Graphics Mode:"+w+","+h+","+d+" "+r+"Hz",0,0
  8. DrawText "Hit any key",0,16
  9. Flip
  10. WaitKey
  11. EndGraphics
  12. Forever
  13. Function ListModes( list:TGadget )
  14. ClearGadgetItems list
  15. For Local t:TGraphicsMode=EachIn GraphicsModes()
  16. AddGadgetItem list,t.ToString()
  17. Next
  18. SelectGadgetItem list,0
  19. End Function
  20. Function RequestGraphicsMode( width Var,height Var,depth Var,hertz Var )
  21. Local w=ClientWidth( Desktop() ),h=ClientHeight( Desktop() )
  22. Local window:TGadget=CreateWindow( "Select graphics Mode",w/2-160,h/2-160,320,320,Null,WINDOW_TITLEBAR )
  23. Local panel:TGadget=CreatePanel( 0,0,ClientWidth(window),ClientHeight(window),window )
  24. w=ClientWidth(panel) ; h=ClientHeight(panel)
  25. Local okay:TGadget=CreateButton( "Okay",w-104,h-32,96,24,panel,BUTTON_OK )
  26. CreateLabel "Graphics Mode:",8,16,w-16,16,panel
  27. Local list1:TGadget=CreateListBox( 8,32,w-16,h-128,panel )
  28. CreateLabel "Graphics Driver:",8,h-80,w-16,16,panel
  29. Local combo1:TGadget=CreateComboBox( 8,h-64,w-16,24,panel )
  30. DisableGadget combo1
  31. AddGadgetItem combo1,"OpenGL"
  32. SelectGadgetItem combo1,0
  33. SetGraphicsDriver GLMax2DDriver()
  34. ?Win32
  35. EnableGadget combo1
  36. AddGadgetItem combo1,"Direct3D7"
  37. SelectGadgetItem combo1,1
  38. SetGraphicsDriver D3D7Max2DDriver()
  39. ?
  40. Local cancel:TGadget=CreateButton( "Cancel",8,h-32,96,24,panel,BUTTON_CANCEL )
  41. ListModes list1
  42. ActivateGadget list1
  43. Local ret=False
  44. While WaitEvent()<>EVENT_WINDOWCLOSE
  45. Select EventID()
  46. Case EVENT_GADGETACTION
  47. Select EventSource()
  48. Case okay
  49. Local t:TGraphicsMode=GraphicsModes()[ SelectedGadgetItem( list1 ) ]
  50. width=t.width
  51. height=t.height
  52. depth=t.depth
  53. hertz=t.hertz
  54. ret=True
  55. Exit
  56. Case cancel
  57. Exit
  58. Case combo1
  59. Select SelectedGadgetItem( combo1 )
  60. Case 0
  61. SetGraphicsDriver GLMax2DDriver()
  62. ?Win32
  63. Case 1
  64. SetGraphicsDriver D3D7Max2DDriver()
  65. ?
  66. End Select
  67. ListModes list1
  68. End Select
  69. Case EVENT_WINDOWCLOSE
  70. Exit
  71. End Select
  72. Wend
  73. FreeGadget window
  74. Return ret
  75. End Function