RTFBox Comment déterminer la position XY du curseur
2 réponses
Driss HANIB
Bonjour à tous,
je suis toujours sur mon projet RTF.
J'ai trouvé sur le net un morceau de programme qui permet au curseur de
suivre la position de la souris.
Par contre je voudrais déterminer pour une position du curseur donnée, les
coordonnées XY par rapport à l'écran.
En effet j'ai ajouter la posiibilité d'insérer des caractères spéciaux :
ceci apparait dans une fenetre (en fait un picturebox avec des boutons pour
chaque caracatère disponible) mais je voudrai faire en sorte que cette
fenetre ne cache le curseur dans le texbox..
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques93
Bonjour Driss HANIB, Driss HANIB a écrit :
Bonjour à tous,
je suis toujours sur mon projet RTF.
J'ai trouvé sur le net un morceau de programme qui permet au curseur de suivre la position de la souris.
Par contre je voudrais déterminer pour une position du curseur donnée, les coordonnées XY par rapport à l'écran. En effet j'ai ajouter la posiibilité d'insérer des caractères spéciaux : ceci apparait dans une fenetre (en fait un picturebox avec des boutons pour chaque caracatère disponible) mais je voudrai faire en sorte que cette fenetre ne cache le curseur dans le texbox..
Il y a un petit piège, me semble t-il, au niveau de la terminologie, entre curseur, utilisé pour nommer le point d'insertion dans une zone de saisie, et le curseur de la souris. Dans les API's :
Point d'insertion (ou "curseur" de saisie) = Caret Curseur de la souris = Cursor
Les API's permettant de déterminer leur position sont très similaires :
GetCursorPos lpPoint -> Position de la souris GetCaretPos lpPoint -> Position du point d'insertion
Mais tout n'est pas si simple. GetCursorPos renvoie une position relative à l'écran. GetCaretPos un position relative a son conteneur, c'est à dire au minimum sa fenêtre (éventuellement à une Frame, etc) De plus pour bien faire, il faut tenir compte de la hauteur de la barre de titre, et des bordures de chaque fenêtre (la valeur retournée étant relative à la zone cliente de la fenêtre).
Autre petit détail, GetCaretPos renvoie un point, mais le "Caret" lui même occupe un rectangle dont la taille peux varier :
Private Type POINTAPI x As Long y As Long End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Declare Function GetCaretPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Const SM_CYCAPTION = 4
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Sub rtf_Change() Dim CursorPos As POINTAPI Dim CaretPos As POINTAPI Dim TBHeight As Long
J'ai trouvé sur le net un morceau de programme qui permet au curseur de
suivre la position de la souris.
Par contre je voudrais déterminer pour une position du curseur donnée, les
coordonnées XY par rapport à l'écran.
En effet j'ai ajouter la posiibilité d'insérer des caractères spéciaux :
ceci apparait dans une fenetre (en fait un picturebox avec des boutons pour
chaque caracatère disponible) mais je voudrai faire en sorte que cette
fenetre ne cache le curseur dans le texbox..
Il y a un petit piège, me semble t-il, au niveau de la terminologie,
entre curseur, utilisé pour nommer le point d'insertion dans une zone de
saisie, et le curseur de la souris. Dans les API's :
Point d'insertion (ou "curseur" de saisie) = Caret
Curseur de la souris = Cursor
Les API's permettant de déterminer leur position sont très similaires :
GetCursorPos lpPoint -> Position de la souris
GetCaretPos lpPoint -> Position du point d'insertion
Mais tout n'est pas si simple. GetCursorPos renvoie une position
relative à l'écran. GetCaretPos un position relative a son conteneur,
c'est à dire au minimum sa fenêtre (éventuellement à une Frame, etc)
De plus pour bien faire, il faut tenir compte de la hauteur de la barre
de titre, et des bordures de chaque fenêtre (la valeur retournée étant
relative à la zone cliente de la fenêtre).
Autre petit détail, GetCaretPos renvoie un point, mais le "Caret" lui
même occupe un rectangle dont la taille peux varier :
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI)
As Long
Private Declare Function GetCaretPos Lib "user32" (lpPoint As POINTAPI)
As Long
Private Const SM_CYCAPTION = 4
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As
Long) As Long
Private Sub rtf_Change()
Dim CursorPos As POINTAPI
Dim CaretPos As POINTAPI
Dim TBHeight As Long
J'ai trouvé sur le net un morceau de programme qui permet au curseur de suivre la position de la souris.
Par contre je voudrais déterminer pour une position du curseur donnée, les coordonnées XY par rapport à l'écran. En effet j'ai ajouter la posiibilité d'insérer des caractères spéciaux : ceci apparait dans une fenetre (en fait un picturebox avec des boutons pour chaque caracatère disponible) mais je voudrai faire en sorte que cette fenetre ne cache le curseur dans le texbox..
Il y a un petit piège, me semble t-il, au niveau de la terminologie, entre curseur, utilisé pour nommer le point d'insertion dans une zone de saisie, et le curseur de la souris. Dans les API's :
Point d'insertion (ou "curseur" de saisie) = Caret Curseur de la souris = Cursor
Les API's permettant de déterminer leur position sont très similaires :
GetCursorPos lpPoint -> Position de la souris GetCaretPos lpPoint -> Position du point d'insertion
Mais tout n'est pas si simple. GetCursorPos renvoie une position relative à l'écran. GetCaretPos un position relative a son conteneur, c'est à dire au minimum sa fenêtre (éventuellement à une Frame, etc) De plus pour bien faire, il faut tenir compte de la hauteur de la barre de titre, et des bordures de chaque fenêtre (la valeur retournée étant relative à la zone cliente de la fenêtre).
Autre petit détail, GetCaretPos renvoie un point, mais le "Caret" lui même occupe un rectangle dont la taille peux varier :
Private Type POINTAPI x As Long y As Long End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Declare Function GetCaretPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Const SM_CYCAPTION = 4
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Sub rtf_Change() Dim CursorPos As POINTAPI Dim CaretPos As POINTAPI Dim TBHeight As Long
merci ton bout de code je pense qu'il va m'aider; c'est effectivement le caret qui m'intéresse.
je regarde cela et je reviens vers toi
Driss
"Jacques93" a écrit dans le message de news:
Bonjour Driss HANIB, Driss HANIB a écrit :
Bonjour à tous,
je suis toujours sur mon projet RTF.
J'ai trouvé sur le net un morceau de programme qui permet au curseur de suivre la position de la souris.
Par contre je voudrais déterminer pour une position du curseur donnée, les coordonnées XY par rapport à l'écran. En effet j'ai ajouter la posiibilité d'insérer des caractères spéciaux : ceci apparait dans une fenetre (en fait un picturebox avec des boutons pour chaque caracatère disponible) mais je voudrai faire en sorte que cette fenetre ne cache le curseur dans le texbox..
Il y a un petit piège, me semble t-il, au niveau de la terminologie, entre curseur, utilisé pour nommer le point d'insertion dans une zone de saisie, et le curseur de la souris. Dans les API's :
Point d'insertion (ou "curseur" de saisie) = Caret Curseur de la souris = Cursor
Les API's permettant de déterminer leur position sont très similaires :
GetCursorPos lpPoint -> Position de la souris GetCaretPos lpPoint -> Position du point d'insertion
Mais tout n'est pas si simple. GetCursorPos renvoie une position relative à l'écran. GetCaretPos un position relative a son conteneur, c'est à dire au minimum sa fenêtre (éventuellement à une Frame, etc) De plus pour bien faire, il faut tenir compte de la hauteur de la barre de titre, et des bordures de chaque fenêtre (la valeur retournée étant relative à la zone cliente de la fenêtre).
Autre petit détail, GetCaretPos renvoie un point, mais le "Caret" lui même occupe un rectangle dont la taille peux varier :
Private Type POINTAPI x As Long y As Long End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Declare Function GetCaretPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Const SM_CYCAPTION = 4
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Sub rtf_Change() Dim CursorPos As POINTAPI Dim CaretPos As POINTAPI Dim TBHeight As Long
merci ton bout de code je pense qu'il va m'aider; c'est effectivement le
caret qui m'intéresse.
je regarde cela et je reviens vers toi
Driss
"Jacques93" <jacques@Nospam> a écrit dans le message de news:
OB9hAqqPKHA.1372@TK2MSFTNGP02.phx.gbl...
Bonjour Driss HANIB,
Driss HANIB a écrit :
Bonjour à tous,
je suis toujours sur mon projet RTF.
J'ai trouvé sur le net un morceau de programme qui permet au curseur de
suivre la position de la souris.
Par contre je voudrais déterminer pour une position du curseur donnée,
les coordonnées XY par rapport à l'écran.
En effet j'ai ajouter la posiibilité d'insérer des caractères spéciaux :
ceci apparait dans une fenetre (en fait un picturebox avec des boutons
pour chaque caracatère disponible) mais je voudrai faire en sorte que
cette fenetre ne cache le curseur dans le texbox..
Il y a un petit piège, me semble t-il, au niveau de la terminologie, entre
curseur, utilisé pour nommer le point d'insertion dans une zone de saisie,
et le curseur de la souris. Dans les API's :
Point d'insertion (ou "curseur" de saisie) = Caret
Curseur de la souris = Cursor
Les API's permettant de déterminer leur position sont très similaires :
GetCursorPos lpPoint -> Position de la souris
GetCaretPos lpPoint -> Position du point d'insertion
Mais tout n'est pas si simple. GetCursorPos renvoie une position relative
à l'écran. GetCaretPos un position relative a son conteneur, c'est à dire
au minimum sa fenêtre (éventuellement à une Frame, etc)
De plus pour bien faire, il faut tenir compte de la hauteur de la barre de
titre, et des bordures de chaque fenêtre (la valeur retournée étant
relative à la zone cliente de la fenêtre).
Autre petit détail, GetCaretPos renvoie un point, mais le "Caret" lui même
occupe un rectangle dont la taille peux varier :
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI)
As Long
Private Declare Function GetCaretPos Lib "user32" (lpPoint As POINTAPI) As
Long
Private Const SM_CYCAPTION = 4
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As
Long) As Long
Private Sub rtf_Change()
Dim CursorPos As POINTAPI
Dim CaretPos As POINTAPI
Dim TBHeight As Long
merci ton bout de code je pense qu'il va m'aider; c'est effectivement le caret qui m'intéresse.
je regarde cela et je reviens vers toi
Driss
"Jacques93" a écrit dans le message de news:
Bonjour Driss HANIB, Driss HANIB a écrit :
Bonjour à tous,
je suis toujours sur mon projet RTF.
J'ai trouvé sur le net un morceau de programme qui permet au curseur de suivre la position de la souris.
Par contre je voudrais déterminer pour une position du curseur donnée, les coordonnées XY par rapport à l'écran. En effet j'ai ajouter la posiibilité d'insérer des caractères spéciaux : ceci apparait dans une fenetre (en fait un picturebox avec des boutons pour chaque caracatère disponible) mais je voudrai faire en sorte que cette fenetre ne cache le curseur dans le texbox..
Il y a un petit piège, me semble t-il, au niveau de la terminologie, entre curseur, utilisé pour nommer le point d'insertion dans une zone de saisie, et le curseur de la souris. Dans les API's :
Point d'insertion (ou "curseur" de saisie) = Caret Curseur de la souris = Cursor
Les API's permettant de déterminer leur position sont très similaires :
GetCursorPos lpPoint -> Position de la souris GetCaretPos lpPoint -> Position du point d'insertion
Mais tout n'est pas si simple. GetCursorPos renvoie une position relative à l'écran. GetCaretPos un position relative a son conteneur, c'est à dire au minimum sa fenêtre (éventuellement à une Frame, etc) De plus pour bien faire, il faut tenir compte de la hauteur de la barre de titre, et des bordures de chaque fenêtre (la valeur retournée étant relative à la zone cliente de la fenêtre).
Autre petit détail, GetCaretPos renvoie un point, mais le "Caret" lui même occupe un rectangle dont la taille peux varier :
Private Type POINTAPI x As Long y As Long End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Declare Function GetCaretPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Const SM_CYCAPTION = 4
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Sub rtf_Change() Dim CursorPos As POINTAPI Dim CaretPos As POINTAPI Dim TBHeight As Long