Page 1 sur 1

Aplication en mode fenetré et souris ...

Publié : mer. 02/mai/2007 20:31
par scaraber
Salut,
Je cherche un systeme pour ne pas bloquer le souris dans un ecran, mais qu'elle soit encore utilisable (passer le capture de la souris).
Si vous avez une sollution ou des idée pour, je suis preneur.
Voila tout
Merci d'avance
a+
Scaraber

Publié : mer. 02/mai/2007 21:01
par tmyke
Un code qui aurais ce genre de comportement

Code : Tout sélectionner

If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
  End
EndIf

If  OpenWindow(0 , 100, 100, 800,600, "Title")


  If OpenWindowedScreen(WindowID(0), 0, 0, 800,600, 0, 0, 0)
      
      LoadSprite(0, "sources\Data\Geebee2.bmp")

      Repeat

          DisplaySprite(0, 100, 100)

      Until WindowEvent()=#PB_Event_CloseWindow

  EndIf

EndIf

Publié : mer. 02/mai/2007 21:03
par scaraber
Et la souris la dedans ?

Publié : mer. 02/mai/2007 21:10
par tmyke
Je pense ne pas avoir trop compris ta question ... désolé.

En fait qu'attends-tu du comportement de la souris ?

Publié : mer. 02/mai/2007 21:13
par lionel_om
tmyke a écrit :Je pense ne pas avoir trop compris ta question ... désolé.

En fait qu'attends-tu du comportement de la souris ?
Je pense (mais c'est sans tester car mon pc là n'a pas PB) que c'est parce que la souris est capturée dans la fenêtre ouverte et ne peut pas en sortir...

Publié : mer. 02/mai/2007 21:14
par scaraber
Je cherche a utiliser les commandes de la lib Mouse, dans une aplication qui peut etre en mode plein ecran ou non, en mode fenetré je cherche donc a liberer la souris quand on veut quiter l'ecran

Edit:
Lionel c'est sa

Publié : mer. 02/mai/2007 22:02
par tmyke
lionel_om a écrit : En fait qu'attends-tu du comportement de la souris ?
Je pense (mais c'est sans tester car mon pc là n'a pas PB) que c'est parce que la souris est capturée dans la fenêtre ouverte et ne peut pas en sortir..
C'est bien ce qui m'avais semblé comprendre. Le petit code que je donne
en haut est un exemple ou justement ta souris n'est pas coincé dans ta
fenetre et ou tu peux fairece que tu veux avec, y compris dans une autre
appli...

Publié : mer. 02/mai/2007 22:18
par scaraber
sauf que si je passe en mode full screen sa le fait moyen:p

Publié : mer. 02/mai/2007 22:18
par comtois
il y a un exemple ici

Code : Tout sélectionner

;****************************************************************
; Program:         WindowedScreen + GUI Eventhandling Demo
; Author:          netmaestro
; Date:            March 22, 2007
; License:         Free, unrestricted, credit appreciated
;                  but not required
;****************************************************************

*unpacked = AllocateMemory(6984)
UnpackMemory(?PicPak, *unpacked)
Global img0 = CatchImage(#PB_Any, *unpacked, 6984)
Global img1 = GrabImage(img0, #PB_Any, 0,42,15,28)
StartDrawing(ImageOutput(img0))
  Box(0,42,15,28,#Black)
StopDrawing()
FreeMemory(*unpacked)

#LeftOffset = 20
#TopOffset  = 20
#ScreenW    = 440
#ScreenH    = 440

OpenWindow(0,0,0,800,480,"Screen Mouse Capture/Release Demo",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
ButtonGadget(1,570,420,120,24,"Push Me!")
InitSprite():InitMouse()
OpenWindowedScreen(WindowID(0),20,20,440,440,0,0,0)

CreateSprite(0,32,32)
StartDrawing(SpriteOutput(0))
  DrawImage(ImageID(img1),0,0)
StopDrawing()

Procedure DoScreenDisplay(inscreen)
  ClearScreen(0)
  ;
  ; Display your screen stuff
  StartDrawing(ScreenOutput())
    DrawImage(ImageID(img0),170,300)
    DrawText(120,200,"Screen is not capturing mouse      ",#Gray, #Black)
    DrawText(180,230,"( 000, 000 )", #Gray, #Black)   
  StopDrawing() 
  ;
  If inscreen  ; manage mouse events only if mouse is inside screen
    ExamineMouse()
    StartDrawing(ScreenOutput())
      DrawText(120,200,"  Screen is capturing mouse      ",#Yellow, #Black)
      DrawText(180,230,"( "+RSet(Str(MouseX()),3,"0")+", "+RSet(Str(MouseY()),3,"0")+" )",#White,#Black)

      If MouseButton(#PB_MouseButton_Left)
        FillArea(186,316,0,#Red)
      EndIf
 
      If MouseButton(#PB_MouseButton_Middle)
        FillArea(202,311,0,#Red)
      EndIf
      If MouseButton(#PB_MouseButton_Right)
        FillArea(216,306,0,#Red)
      EndIf
    StopDrawing()
    DisplayTransparentSprite(0,MouseX(),MouseY())
  EndIf
  FlipBuffers()
EndProcedure

Repeat
  ev = WaitWindowEvent()
  If inscreen
    If MouseX()>#ScreenW-2 Or MouseY()>#ScreenH-2 Or MouseX()<1 Or MouseY()<1
      ReleaseMouse(1)
      inscreen = #False
    EndIf 
  Else
    ;
    ;************************************
    ;    Handle #PB_Event_Gadget Here
    ;************************************
    ;
    If ev = #PB_Event_Gadget
      If EventGadget() = 1
        MessageRequester("","You pressed the button!")
      EndIf
    EndIf
    ;
    mx = WindowMouseX(0):my = WindowMouseY(0)
    If mx < #ScreenW+#LeftOffset And mx > #LeftOffset And my > #TopOffset And my < #TopOffset+#ScreenH
      ReleaseMouse(0)
      MouseLocate(mx-#LeftOffset,my-#TopOffset)
      inscreen = #True
    EndIf
  EndIf
  DoScreenDisplay(inscreen)
Until ev = #PB_Event_CloseWindow

DataSection
  PicPak:
  Data.b $4A,$43,$48,$1B,$00,$00,$16,$6A,$D7,$16,$B4,$A9,$D0,$20,$6D,$14,$D9,$88,$12,$CA
  Data.b $08,$B0,$4A,$44,$25,$B2,$0C,$10,$46,$02,$11,$D2,$28,$79,$12,$02,$5B,$28,$09,$80
  Data.b $29,$02,$E2,$1F,$01,$FF,$09,$BE,$74,$5F,$A5,$E0,$52,$77,$95,$DC,$4A,$A6,$51,$F2
  Data.b $28,$09,$FE,$83,$84,$14,$68,$7F,$84,$00,$47,$A0,$FA,$11,$22,$1F,$81,$D8,$11,$C8
  Data.b $7A,$04,$6E,$47,$A0,$E3,$04,$12,$1D,$81,$C0,$11,$48,$71,$81,$C0,$46,$20,$66,$04
  Data.b $2A,$1A,$A0,$91,$11,$48,$18,$81,$2C,$46,$00,$30,$02,$6A,$0F,$68,$60,$84,$51,$80
  Data.b $7D,$DC,$57,$80,$F9,$82,$08,$69,$EC,$C8,$46,$0E,$20,$C2,$EC,$5D,$CC,$E3,$68,$1F
  Data.b $99,$45,$16,$2F,$66,$E4,$20,$A9,$68,$00,$BC,$58,$00,$0E,$A0,$37,$9A,$61,$47,$EE
  Data.b $C8,$4C,$2D,$0A,$43,$A3,$56,$D1,$03,$6C,$77,$6C,$DC,$67,$3E,$CC,$32,$FA,$23,$46
  Data.b $0B,$30,$91,$AA,$C8,$AC,$80,$59,$BC,$C8,$68,$9B,$99,$75,$91,$3E,$32,$1B,$AE,$83
  Data.b $C2,$D8,$A2,$64,$22,$45,$2F,$06,$00,$31,$F3,$6C,$24,$12,$8E,$19,$B9,$6D,$C6,$CC
  Data.b $17,$B6,$32,$D4,$29,$EE,$10,$25,$62,$5C,$30,$2C,$80,$86,$79,$28,$39,$94,$5C,$24
  Data.b $25,$30,$52,$9A,$14,$69,$B3,$32,$A1,$32,$8A,$CD,$2E,$32,$18,$14,$15,$33,$46,$A8
  Data.b $78,$78,$E8,$B8,$31,$23,$58,$1F,$18,$03,$0D,$19,$3A,$8C,$7E,$3C,$33,$88,$11,$8B
  Data.b $CC,$3A,$01,$80,$50,$47,$0C,$AA,$D8,$3A,$48,$9C,$60,$44,$E8,$E0,$3E,$9D,$02,$6C
  Data.b $12,$09,$D3,$23,$C1,$01,$25,$91,$36,$29,$4C,$F3,$12,$28,$5F,$14,$B1,$C8,$52,$27
  Data.b $14,$27,$44,$9A,$41,$49,$03,$6A,$F3,$F4,$36,$2B,$C0,$5A,$0B,$34,$33,$C5,$A6,$35
  Data.b $5B,$26,$69,$46,$93,$19,$41,$B1,$53,$FC,$12,$31,$2E,$6B,$5A,$05,$98,$25,$61,$82
  Data.b $B7,$49,$A1,$2A,$23,$11,$BA,$C6,$CC,$83,$B4,$D8,$29,$4D,$A8,$49,$90,$70,$F3,$12
  Data.b $33,$2A,$86,$A2,$34,$67,$CC,$68,$9C,$E4,$98,$59,$66,$93,$79,$D9,$C9,$D5,$A4,$44
  Data.b $E9,$64,$60,$95,$CB,$A6,$C0,$20,$C9,$1D,$5E,$52,$60,$52,$3C,$8F,$CC,$30,$E7,$B7
  Data.b $E8,$75,$D9,$69,$AC,$0B,$03,$CC,$22,$B9,$EA,$92,$12,$E8,$94,$D4,$04,$5B,$73,$FE
  Data.b $63,$E6,$3B,$35,$C9,$61,$25,$12,$D3,$A2,$3E,$FA,$07,$58,$00,$86,$92,$54,$B0,$2C
  Data.b $4F,$64,$B0,$39,$4F,$BA,$49,$C0,$26,$B1,$02,$8C,$82,$59,$47,$BA,$2C,$AF,$32,$DB
  Data.b $A4,$8C,$B3,$2A,$D6,$62,$4D,$C7,$20,$63,$B7,$FC,$A2,$47,$94,$44,$D9,$00,$84,$32
  Data.b $32,$D3,$92,$C7,$CC,$FB,$C7,$4B,$4C,$29,$12,$B3,$AC,$23,$44,$66,$97,$13,$54,$D6
  Data.b $C4,$54,$C8,$CD,$71,$C3,$0B,$B0,$0A,$63,$2A,$29,$1D,$AD,$2B,$36,$67,$F2,$2B,$B1
  Data.b $C2,$F4,$2E,$93,$41,$D2,$32,$B3,$34,$4A,$AA,$73,$D2,$BB,$76,$8A,$FB,$81,$23,$C7
  Data.b $C7,$4C,$2E,$99,$90,$D0,$68,$5F,$80,$55,$CD,$E2,$95,$F9,$9D,$68,$A5,$69,$30,$86
  Data.b $DD,$1C,$09,$80,$6B,$C2,$13,$2A,$32,$28,$68,$6D,$2B,$BF,$CE,$A8,$D8,$A5,$3D,$66
  Data.b $17,$4C,$C5,$49,$B2,$51,$53,$26,$DF,$09,$4A,$1A,$AD,$45,$01,$56,$B9,$6C,$D1,$27
  Data.b $26,$D7,$78,$61,$6E,$7A,$2B,$76,$61,$47,$99,$55,$28,$37,$55,$B1,$F1,$15,$49,$49
  Data.b $17,$1C,$C8,$AC,$22,$99,$CC,$4B,$93,$AF,$4A,$2F,$38,$DF,$CC,$2C,$17,$CD,$30,$3B
  Data.b $ED,$8A,$BB,$F0,$31,$E9,$3D,$66,$99,$16,$99,$34,$99,$F9,$51,$FA,$3A,$74,$60,$5E
  Data.b $DA,$E9,$D1,$EF,$31,$BB,$BF,$7F,$6F,$F3,$32,$15,$03,$10,$8B,$8D,$84,$D6,$46,$F9
  Data.b $2D,$66,$CF,$4E,$19,$82,$83,$B6,$4C,$45,$58,$3F,$66,$8C,$D8,$9C,$22,$01,$B8,$58
  Data.b $00,$7E,$1E,$52,$94,$85,$FB,$31,$C3,$38,$B2,$BC,$15,$8A,$0C,$85,$B2,$7A,$0C,$21
  Data.b $71,$A7,$5A,$D7,$B1,$55,$E1,$85,$42,$2D,$0A,$1B,$2F,$94,$24,$F4,$7E,$CC,$65,$6D
  Data.b $2C,$7A,$3B,$55,$48,$07,$EF,$C7,$0C,$83,$F5,$38,$47,$43,$02,$AD,$E6,$A8,$CC,$12
  Data.b $59,$A4,$A3,$91,$F2,$5E,$68,$25,$F1,$31,$26,$86,$A0,$ED,$CA,$9D,$C2,$0C,$3F,$AE
  Data.b $22,$A8,$C3,$7B,$A4,$E8,$2E,$82,$B2,$14,$D3,$8A,$BE,$5C,$38,$0E,$8E,$FA,$E2,$90
  Data.b $CA,$B5,$20,$17,$07,$D7,$CC,$AC,$AA,$D8,$A4,$E6,$29,$6F,$3B,$18,$3C,$4C,$31,$2B
  Data.b $4C,$82,$8F,$51,$D0,$FE,$31,$D1,$6A,$92,$08,$B4,$7C,$0F,$06,$27,$9D,$20,$E4,$FC
  Data.b $CB,$D8,$3B,$A4,$12,$0D,$07,$2E,$92,$40,$85,$39,$EB,$B0,$7D,$8D,$19,$61,$B0,$4D
  Data.b $15,$22,$9F,$C0,$DE,$1A,$EA,$42,$68,$26,$AA,$D0,$FF,$47,$33,$45,$BF,$C6,$48,$69
  Data.b $08,$09,$94,$30,$94,$85,$A3,$A1,$FD,$2D,$5C,$FE,$BE,$D5,$9A,$80,$A0,$B0,$1C,$5A
  Data.b $96,$25,$A3,$DF,$85,$EA,$0D,$32,$F8,$31,$7F,$4F,$D1,$84,$D0,$39,$0E,$69,$AB,$C7
  Data.b $2C,$90,$77,$AF,$47,$44,$BF,$42,$45,$3A,$B8,$30,$AB,$1F,$0C,$B4,$EF,$CC,$BD,$66
  Data.b $E8,$5A,$F4,$BB,$A0,$16,$40,$43,$3B,$38,$F5,$CD,$54,$92,$FB,$9E,$07,$18,$88,$84
  Data.b $81,$D4,$C5,$66,$47,$6E,$57,$8D,$85,$DE,$C0,$14,$5F,$05,$53,$DC,$6C,$F6,$7E,$90
  Data.b $D4,$B9,$0F,$59,$7E,$67,$C0,$93,$04,$5A,$CC,$C4,$E4,$A8,$31,$43,$B4,$CA,$47,$8A
  Data.b $12,$BB,$59,$97,$55,$E8,$B9,$86,$3F,$5E,$83,$54,$D9,$71,$77,$38,$57,$8C,$DA,$14
  Data.b $20,$A2,$6B,$85,$81,$5C,$FB,$04,$0F,$FD,$C7,$43,$FB,$66,$91,$9F,$81,$2E,$02,$6D
  Data.b $18,$0A,$D6,$35,$A3,$E4,$A4,$19,$6A,$D0,$40,$6A,$2A,$4C,$CA,$9A,$AE,$C4,$66,$0B
  Data.b $44,$F4,$10,$51,$31,$AC,$04,$3B,$1E,$6A,$91,$AE,$9D,$F2,$F9,$02,$E0,$AB,$45,$20
  Data.b $08,$15,$62,$0D,$AA,$0B,$4D,$91,$6E,$8E,$B9,$D8,$AC,$E8,$2E,$13,$BF,$22,$45,$16
  Data.b $CD,$D1,$EF,$10,$41,$AA,$4F,$82,$62,$61,$F0,$90,$69,$90,$45,$FA,$CD,$4E,$1C,$AD
  Data.b $12,$B3,$29,$CA,$44,$AE,$D0,$4F,$9B,$F2,$94,$B2,$16,$2E,$15,$51,$20,$A4,$68,$65
  Data.b $51,$83,$A2,$57,$62,$A6,$54,$BC,$60,$5D,$F5,$70,$51,$89,$8E,$B5,$C4,$71,$64,$80
  Data.b $00,$3C,$52,$A4,$E8,$A2,$13,$AE,$1E,$F9,$2A,$57,$F9,$22,$E0,$12,$A9,$18,$B7,$20
  Data.b $D0,$6F,$0E,$19,$C2,$04,$36,$43,$73,$B4,$44,$AE,$EC,$2A,$1C,$17,$19,$43,$8E,$F2
  Data.b $5D,$A8,$0B,$B3,$40,$7A,$0D,$00,$88,$84,$AA,$00,$E3,$9A,$16,$E3,$72,$D3,$1F,$E9
  Data.b $58,$A8,$A3,$42,$B8,$18,$12,$D2,$8B,$C9,$F8,$7A,$A5,$CE,$E5,$2E,$4D,$A4,$A4,$C4
  Data.b $A4,$0E,$81,$CE,$22,$71,$72,$D2,$91,$4E,$EA,$8E,$0D,$F3,$2E,$93,$42,$3B,$8B,$E4
  Data.b $B7,$F2,$CA,$48,$AE,$61,$CE,$93,$BB,$CC,$DB,$BC,$C4,$E4,$01,$2C,$7B,$12,$C3,$A4
  Data.b $84,$F4,$12,$FE,$4C,$E8,$46,$57,$A2,$77,$59,$09,$69,$67,$75,$01,$F6,$89,$5A,$47
  Data.b $9F,$E5,$51,$52,$24,$00,$DE,$D9,$5D,$98,$B3,$68,$52,$F4,$48,$C4,$EA,$00,$00,$00
  Data.b $00,$80
EndDataSection

Publié : mer. 02/mai/2007 22:21
par scaraber
c'est exactment ce que je cherchait comtois
merci bcp
a+
Scaraber

Publié : sam. 05/mai/2007 10:32
par RV
J'avais aussi des soucis pour passer facilement d'une Window à une WindowedScreen.
Le code répond très bien à ce problème.

Merci à vous!