souris dans un openscreen

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

souris dans un openscreen

Message par Patrick88 »

je pige pas bien pourquoi :

1) la souris reste bloqué dans la fenêtre graphique et ne veux plus en sortir sauf si je supprime le examinemouse... mais dans ce cas à t'on encore accés à la fenêtre graphique ( en terme de coordonné graphique )

2) est il absolument necessaire de faire des createsprite chaque fois que l'on veut dessiner quelque chose sur la fenêtre graphique ? c'est chiant !
on peut pas faire des bêtes startdrawing.... ?

Code : Tout sélectionner

;- déclaration constante
Enumeration
  #WIN_MAIN
  #GDT_STATUSBAR
  #GDT_STATUSBAR_COORDX
  #GDT_STATUSBAR_COORDY
  
  #SPR_CURSEUR
EndEnumeration

;- déclaration structure
Structure STRU_INFO_WINDOW
  ;relatif à la fenêtre principale
  main_x.w
  main_y.w
  main_width.w
  main_height.w
  main_flag.l
  main_version.s
  
  ;relatif à la zone de dessin
  draw_x.w 
  draw_y.w 
  draw_width.w
  draw_height.w
  draw_AutoStretch.l
  draw_RightOffset.w
  draw_BottomOffset.w
EndStructure

;- déclaration variable
Global INFO_WINMAIN.STRU_INFO_WINDOW

; ScreenWidth = GetSystemMetrics_(#SM_CXSCREEN)
; ScreenHeight = GetSystemMetrics_(#SM_CYSCREEN)

Procedure initialisation()
  ;relatif à la fenêtre principale
  INFO_WINMAIN\main_x = 0
  INFO_WINMAIN\main_y = 0
  INFO_WINMAIN\main_width = 600
  INFO_WINMAIN\main_height = 350
  INFO_WINMAIN\main_flag = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget
  INFO_WINMAIN\main_version = "Draw-01-00"

  ;relatif à la zone de dessin
  INFO_WINMAIN\draw_x = 4
  INFO_WINMAIN\draw_y = 4
  INFO_WINMAIN\draw_RightOffset = 25
  INFO_WINMAIN\draw_BottomOffset = 25
  INFO_WINMAIN\draw_width = INFO_WINMAIN\main_width - INFO_WINMAIN\draw_x-INFO_WINMAIN\draw_RightOffset
  INFO_WINMAIN\draw_height = INFO_WINMAIN\main_height - INFO_WINMAIN\draw_y-INFO_WINMAIN\draw_BottomOffset
  INFO_WINMAIN\draw_AutoStretch = 1
  
If InitSprite() = 0 Or InitKeyboard()=0 Or InitMouse()  = 0
  MessageRequester( "Erreur" , "Impossible d'initialiser DirectX 7 Ou plus" , 0 )
  End
ElseIf OpenWindow(#WIN_MAIN,INFO_WINMAIN\main_x,INFO_WINMAIN\main_y,INFO_WINMAIN\main_width,INFO_WINMAIN\main_height,INFO_WINMAIN\main_flag,INFO_WINMAIN\main_version) = 0
  MessageRequester( "Erreur", "Impossible d'ouvrir la fenêtre")
  End
EndIf
If OpenWindowedScreen( WindowID(#WIN_MAIN), INFO_WINMAIN\draw_x,INFO_WINMAIN\draw_y,INFO_WINMAIN\draw_width,INFO_WINMAIN\draw_height, INFO_WINMAIN\draw_AutoStretch, INFO_WINMAIN\draw_RightOffset, INFO_WINMAIN\draw_BottomOffset ) = 0
  MessageRequester( "Erreur" , "Impossible d'ouvrir l'écran " , 0 )
  End
EndIf
If CreateStatusBar(#GDT_STATUSBAR, WindowID(#WIN_MAIN)) 
  AddStatusBarField(80) 
  AddStatusBarField(80)
EndIf 

CreateSprite(#SPR_CURSEUR,20,20)
StartDrawing(SpriteOutput(#SPR_CURSEUR))
FrontColor(255,0,0)
LineXY(10,0,10,20)
LineXY(0,10,20,10)
StopDrawing()
  

EndProcedure

initialisation()
Repeat
  ClearScreen(255,255,255)
 
  ExamineMouse()
  mx.w = MouseX() : my.w = MouseY()
  
  DisplaySprite(#SPR_CURSEUR,mx-10,my-10)
  
  Debug Str(mx)+"/"+Str(my)
  

  mx = WindowMouseX() : my = WindowMouseY()
  StatusBarText(#GDT_STATUSBAR, 0, "X:"+Str(mx)) 
  StatusBarText(#GDT_STATUSBAR, 1, "Y:"+Str(my)) 
  
  ;- gestion des évenement windows
  Select WindowEvent()
    Case #PB_Event_CloseWindow : Quit = 1
      

    ;-Gadgets
    Case #PB_Event_Gadget
      Select EventGadgetID()
      EndSelect
  EndSelect
  FlipBuffers()
  Delay(1)
Until Quit>0
End
merci

patrick