Position de la souris et résolution d'ecran
Position de la souris et résolution d'ecran
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.
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.
- 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
Un minimum de code ça aurait été bien
D'aprés ce que j'ai compris de ta demande
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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Position de la souris et résolution d'ecran
Je suis perplexe avec ça.Micam a écrit :Global Position_X = DesktopMouseX() le résultat MAXI est : 1536
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
Re: Position de la souris et résolution d'ecran
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.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.
Re: Position de la souris et résolution d'ecran
Bonjour à tous
et avec la position de la souris en valeurs absolues.
A+
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
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.
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Re: Position de la souris et résolution d'ecran
Bonjour à tous
Ci dessus petite modification pour avoir la position de la souris dans tout l'écran.
A=
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.
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Re: Position de la souris et résolution d'ecran
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.
Merci de votre aide.
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.
Merci de votre aide.
- 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
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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Position de la souris et résolution d'ecran
Bien vu.
Trop fort.
J'allais finir par m'arracher les cheveux de ne pas comprendre.
Merci infiniment Falsam.
Trop fort.
J'allais finir par m'arracher les cheveux de ne pas comprendre.
Merci infiniment Falsam.
Re: Position de la souris et résolution d'ecran
On peut anticiper ce problème sur un ordi que l'on ne connait pas ?
- 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
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)
Remplacepar que tu sois à 100% ou 125% ou +++ la fenêtre se placera bien comme tu le souhaites au lancement de ton application.
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)
Code : Tout sélectionner
Protected DWidth = GetSystemMetrics_(#SM_CXSCREEN)
Protected DHeight = GetSystemMetrics_(#SM_CYSCREEN)
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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Position de la souris et résolution d'ecran
Ça fonctionne super bien.
Merci encore.
Merci encore.