Position de la souris et résolution d'ecran

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
micam
Messages : 46
Inscription : ven. 27/avr./2012 15:29

Position de la souris et résolution d'ecran

Message par micam »

Bonjour,
J'aimerai positionner une fenetre à l'extrème droite de "X" et au milieu de "Y" de l'écran.
Quand je fais :
ExamineDesktops()
Global Largeur_Ecran = DesktopWidth(0) le résultat est : 1920
Global Hauteur_Ecran = DesktopHeight(0) le résultat est : 1080

Si je fais position de la souris :
Global Position_X = DesktopMouseX() le résultat MAXI est : 1536
Global Position_Y = DesktopMouseY() le résultat MAXI est : 863

Je peux me débrouiller en faisant un calcul, mais si je change d'ordi, je suis marron...
Quelqu'un à une réponse ?
Merci.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Position de la souris et résolution d'ecran

Message par falsam »

Un minimum de code ça aurait été bien :wink:

D'aprés ce que j'ai compris de ta demande

Code : Tout sélectionner

;Plan de l'application
Declare Start()
Declare Exit()

ExamineDesktops()
Start()

Procedure Start()
  Protected DWidth = DesktopWidth(0)
  Protected DHeight = DesktopHeight(0)
  Protected WWidth = 400 ;Largeur de la fenetre
  Protected WHeight = 500; Hauteur de la fenetre
  
  Protected x = DWidth - WWidth ;Fenetre à l'extréme droite de X
  Protected y = (DHeight - WHeight)/2 ;Fenetre au milieu de Y

  OpenWindow(0, x, y, WWidth, WHeight, "Test", #PB_Window_SystemMenu)
    
  ;Triggers
  BindEvent(#PB_Event_CloseWindow, @Exit())
  
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

Procedure Exit()  
  End
EndProcedure
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Position de la souris et résolution d'ecran

Message par Ollivier »

Micam a écrit :Global Position_X = DesktopMouseX() le résultat MAXI est : 1536
Je suis perplexe avec ça.

http://www.purebasic.com/documentation/ ... ousex.html

Code : Tout sélectionner

;***********************************************************************************************************************************************************************
If OpenWindow (0, 0, 0, 300, 30, "Desktop mouse monitor", #PB_Window_SystemMenu | #PB_Window_ScreenCentered )
   TextGadget (0, 10, 6, 200, 20, "")
   Repeat
      Event = WindowEvent ()
      If Event = 0 ; No events are in queue anymore, so halt the process for a few milliseconds for multitasking
         SetGadgetText (0, "Desktop mouse position: "+ Str (DesktopMouseX ())+","+ Str ( DesktopMouseY()))
         Delay (20)
      EndIf
   Until Event = #PB_Event_CloseWindow
EndIf
Avec le code de la doc, t'as toujours des anomalies pour les max?
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Position de la souris et résolution d'ecran

Message par djes »

micam a écrit :Je peux me débrouiller en faisant un calcul, mais si je change d'ordi, je suis marron...
Quelqu'un à une réponse ?
Merci.
En plus des remarques des autres, sur cette question précise, je peux te répondre que les fonctions que tu utilises servent justement à ce que ça fonctionne partout. Elles retourneront les valeurs correspondant aux ordinateurs sur lesquels tu les fais tourner. Il ne faut jamais utiliser de valeur codée "en dur" dans ton code, mais toujours utiliser les fonctions, et éventuellement des calculs pour retrouver d'autres valeurs -relativement- à celles-là, comme le fait falsam avec x et y, ou par exemple LargeurFenetre = DesktopWidth(0) - DesktopWidth(0) / 8.
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Position de la souris et résolution d'ecran

Message par PAPIPP »

Bonjour à tous

et avec la position de la souris en valeurs absolues.

Code : Tout sélectionner

Declare Start()
Declare Exit()

ExamineDesktops()
Start()

Procedure Start()
   DWidth = DesktopWidth(0)
   DHeight = DesktopHeight(0)
   WWidth = 400 ;Largeur de la fenetre
   WHeight = 500; Hauteur de la fenetre

   x = DWidth - WWidth ;Fenetre à l'extréme droite de X
   y = (DHeight - WHeight)/2 ;Fenetre au milieu de Y

  OpenWindow(0, x, y, WWidth, WHeight, "Test", #PB_Window_SystemMenu)
   TextGadget (0, 10, 6, 200, 20, "")
   TextGadget (1, 10, 26, 200, 20, "")
   TextGadget (2, 10, 46, 200, 20, "")
  ;Triggers
  BindEvent(#PB_Event_CloseWindow, @Exit())

  Repeat
    posx=DesktopMouseX ()
    posy=DesktopMousey ()
    if windowevent()=0
      if WindowMouseX (0) >-1
        mes$="Position souris: "+ Str (DesktopMouseX ())+","+ Str (DesktopMouseY ())
      Else
        mes$="Souris hors fenêtre : 0,0"
      endif   
        SetGadgetText (0, mes$)
      endif
       SetGadgetText (1, "Position absolue de la souris : "+str(posx)+","+str(posy))
       SetGadgetText (2, "Position relative de la souris : "+str(WindowMouseX (0))+","+str(WindowMousey (0)))
      delay(5)
  ForEver
EndProcedure

Procedure Exit()
  End
EndProcedure
A+
Dernière modification par PAPIPP le lun. 19/mars/2018 12:29, modifié 1 fois.
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Position de la souris et résolution d'ecran

Message par PAPIPP »

Bonjour à tous

Ci dessus petite modification pour avoir la position de la souris dans tout l'écran.

A=
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
micam
Messages : 46
Inscription : ven. 27/avr./2012 15:29

Re: Position de la souris et résolution d'ecran

Message par micam »

Bonjour à tous.
Falsam, tu as raison. "Un minimum de code ça aurait été bien" Mea culpa. Avec mon code cela aurait été peut être plus compréhensible.
J'ai testé vos codes. Chez moi je n'ai pas le résultat attendu.
Je vous mets des captures d'écran pour essayer de comprendre où ça ne va pas.
Image
Image
Merci de votre aide.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Position de la souris et résolution d'ecran

Message par falsam »

Ca me semble normal car meme si tu es en 1920 x 1080, tu as un zoom d'affichage à 125 % au lieu de 100%
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
micam
Messages : 46
Inscription : ven. 27/avr./2012 15:29

Re: Position de la souris et résolution d'ecran

Message par micam »

Bien vu.
Trop fort.
J'allais finir par m'arracher les cheveux de ne pas comprendre.
Merci infiniment Falsam.
micam
Messages : 46
Inscription : ven. 27/avr./2012 15:29

Re: Position de la souris et résolution d'ecran

Message par micam »

On peut anticiper ce problème sur un ordi que l'on ne connait pas ?
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Position de la souris et résolution d'ecran

Message par falsam »

Oui. Il y a une solution qui tient compte du paramètre d'affichage utilisateur qui consiste à obtenir les véritables dimensions d'un objets manipulés sous Windows.

Pour cela on va utiliser l'API GetSystemMetrics (Ne fonctionne pas avec la version de démonstration de PureBasic)

Remplace

Code : Tout sélectionner

Protected DWidth = DesktopWidth(0)
Protected DHeight = DesktopHeight(0)
par

Code : Tout sélectionner

Protected DWidth = GetSystemMetrics_(#SM_CXSCREEN)
Protected DHeight = GetSystemMetrics_(#SM_CYSCREEN)
que tu sois à 100% ou 125% ou +++ la fenêtre se placera bien comme tu le souhaites au lancement de ton application.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
micam
Messages : 46
Inscription : ven. 27/avr./2012 15:29

Re: Position de la souris et résolution d'ecran

Message par micam »

Ça fonctionne super bien.
Merci encore.
Répondre