IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Position du Curseur dans une fenêtre


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut Position du Curseur dans une fenêtre
    Bonsoir,
    Je suis en train de développer une petite application qui doit afficher un form dans une fenêtre et je veux que l'affichage se passe à côté du curseur (pas au niveau du pointeur).
    La méthode Cursor.Position donne uniquement la position du pointeur. Est ce que quelqu'un saurait comment est ce que je dois procéder?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Je n'ai rien compris. Tu peux être plus précis ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre actif Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Désolé,
    Au fait c'est un add-in de complétion automatique de code que je suis en train d'écrire.
    Donc, j'ai mon form qui contient ma listbox qui est remplie. Je veux qu'à l'invocation de ce form, celui ci apparaisse exactement où se trouve mon curseur.
    J'ai pensé qu'en utilisant Cursor.Position cela marcherait, mais à ma grande surprise, le formulaire apparaît au niveau du pointeur de la souris et non là ou se trouve le curseur dans le texte.
    J'espère que c'est clair maintenant.
    Merci.

  4. #4
    Membre actif Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Personne ne peut voler à mon secours?
    Ca fait trois jours que je galère là dessus. Des indications me seront vraiment utiles.
    Pour le moment j'ai trouvé ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Structure POINTAPI
            Dim x As Integer
            Dim y As Integer
        End Structure
        Declare Function GetCaretPos Lib "user32" (ByRef lpPoint As POINTAPI) As Integer
        Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Integer, ByRef lpPoint As POINTAPI) As Integer
    La première fonction marche bien et me retourne la position du curseur dans le texte. La deuxième fonction est supposée convertir les coordonnées remmenées par GetCaretPos mais le hic c'est que je ne sais pas ce qu'il faut donnée comme valeur à hwnd.

    J'ai trouvé cette fonction qui retourne le hwnd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
    Là, je me suis carrément bloqué. Je ne connais pas les paramètres de cette fonction.

    Merci de bien vouloir m'aider.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    GetCaretPos te donne la position du curseur par rapport au contrôle qui a le focus. ClientToScreen convertit cette position en coordonnées relatives à l'écran, mais il faut lui indiquer quel est le contrôle par rapport au quel les coordonnées sont relatives. Pour ça tu lui passe le "handle" du contrôle. En général tu n'as pas besoin d'utiliser le Handle, mais quand tu utilises une fonction Windows native c'est souvent nécessaire. Tu peux récupérer ce Handle avec la propriété Handle du contrôle.

    Par exemple, si le contrôle est TextBox1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim p As POINTAPI
    GetCaretPos(p)
    ClientToScreen(TextBox1.Handle, p)
    Dim position As New Point(p.x, p.y)
    "position" est la position où tu devras afficher ta form

    EDIT: par contre, je me demande s'il n'y a pas une façon de faire ça sans passer par des API Windows natives... Si quelqu'un sait faire ça en pur .NET je suis preneur !

  6. #6
    Membre actif Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Par exemple, si le contrôle est TextBox1 :
    C'est là que se trouve mon problème. J'écris un add-in comme je l'ai dit plus haut.Et je veux faire de la complétion automatique. Donc comment récupérer le "Handle" de ma fenêtre de Visual Studio?

    Merci quand même pour l'aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recuperer la position du curseur dans une textbox
    Par bleuerouge dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/10/2007, 11h41
  2. [Dates] Position du curseur dans une chaîne
    Par arnaud14 dans le forum Langage
    Réponses: 4
    Dernier message: 04/10/2007, 05h32
  3. [vb]position du curseur dans une zone définie
    Par maxdwarf dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/02/2007, 07h54
  4. [VB6] position du curseur dans une zone texte et insertion caractere
    Par tim69000 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/05/2006, 10h52
  5. Obtenir la position du curseur dans une Image
    Par bastoune dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/11/2003, 22h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo