cette application ouvre une fenetre windows avec un screen à l'intérieur
dans le but de créer un prog de dessin
j'ai donc un cuseur graphique qui se balade avec la souris
mon problème est le suivant ( j'ai cherché hier et la je séche )
lorsque la souris "sort" de l'écran je veux pouvoir acceder aux gadget windows ( ça marche , je teste les limites de l'écran et si oui je fait un releasemouse )
mais pour rerentré dans le screen, je vois pas !!!
pour l'instant , si je fais un clic gauche je rerentre dans l'écran en recentrant le curseur .... pas glop
qq a une idée ?
Code : Tout sélectionner
;- déclaration constante
#WINDOW_DEPLACED = 161
Enumeration
#WIN_MAIN
#GDT_STATUSBAR
#GDT_STATUSBAR_COORDX
#GDT_STATUSBAR_COORDY
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
draw_TopOffset.w
etat.w
EndStructure
;- déclaration variable
Global INFO_WINMAIN.STRU_INFO_WINDOW
Global a_qui_est_la_souris.b
Procedure initialisation()
;relatif à la fenêtre principale
INFO_WINMAIN\main_x = 50
INFO_WINMAIN\main_y = 50
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 = 25
INFO_WINMAIN\draw_y = 25
INFO_WINMAIN\draw_RightOffset = 25
INFO_WINMAIN\draw_BottomOffset = 25
INFO_WINMAIN\draw_TopOffset = 4
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
a_qui_est_la_souris=0
INFO_WINMAIN\etat = 0
EndProcedure
initialisation()
Repeat
ClearScreen(255,255,255)
result = ExamineMouse()
If INFO_WINMAIN\etat = 0
INFO_WINMAIN\etat =1
MouseLocate(INFO_WINMAIN\draw_width/2,INFO_WINMAIN\draw_height/2)
EndIf
mx.w = MouseX() : my.w = MouseY()
If StartDrawing(ScreenOutput())
FrontColor(255,0,0)
LineXY(0,my,INFO_WINMAIN\draw_width,my)
LineXY(mx,0,mx,INFO_WINMAIN\draw_height)
StopDrawing()
EndIf
wmx = WindowMouseX() : wmy = WindowMouseY()
StatusBarText(#GDT_STATUSBAR, 0, "X:"+Str(mx))
StatusBarText(#GDT_STATUSBAR, 1, "Y:"+Str(my))
If mx=0 Or mx=INFO_WINMAIN\draw_width-1
a_qui_est_la_souris = ReleaseMouse(1)
EndIf
If my=0 Or my=INFO_WINMAIN\draw_height-1
a_qui_est_la_souris = ReleaseMouse(1)
EndIf
;- gestion des évenement windows
Select WindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #WM_LBUTTONDOWN
If a_qui_est_la_souris = 1
a_qui_est_la_souris = ReleaseMouse(0)
INFO_WINMAIN\etat =0
EndIf
;-Gadgets
Case #PB_Event_Gadget
Select EventGadgetID()
EndSelect
Default
EndSelect
FlipBuffers()
Delay(1)
Until Quit>0
End