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 :

Déplacer + Redimensionner une autre fenetre


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Déplacer + Redimensionner une autre fenetre
    Bonjour à tous,
    Cela fait 1.5 jours (en comptant la nuit) que je m'arrache les cheveux sur Google !
    Je souhaiterais déplacer et redimensionner une fenêtre nommé 'Essai 1' ...
    Voici ce que j'ai trouvé :

    DECLARATION
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    APPELLE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetWindowPos("Essai 1", -1, 0, 0, 400, 400, 0)
    Bon, c'est la catastrophe
    Quoi que, on ne sait jamais xD
    En tout cas, cela ne marche pas pour moi ...
    Avez-vous déjà rencontrer ce type de problème ?
    Merci pour vos futurs réponses
    A bientôt !

  2. #2
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Bonjour,
    j'ai fait un appli récemment qui utilisait les même genre de fonction

    il faut que tu aille récupère le handle de ton formulaire,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ByVal hwnd As Long
    ' et toi tu y met 
    "Essai 1" ' Un long, c'est numérique pas du texte
    pour récupere le handle il te faut la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
    ensuite ça s'utilise comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim hWnd As Long
    hWnd = FindWindow(Nothing, NomFenetre)
     
    'pour toi 
    hWnd = FindWindow(Nothing, "Essai 1")
    aprés j'ai pas joué avec SetWindows,
    amis si je te dit pas de bétises c'est comme ça que tu devrai l'écrire en définitif:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim hWnd As Long
    hWnd = FindWindow(Nothing, "Essai 1")
    SetWindowPos(hWnd , -1, 0, 0, 400, 400, 0)
    *enjoy*

    PS: j'avoue que ces fonction sont indigestes,voir horribles.
    Mais bon elles sont relativement puissantes

  3. #3
    Invité
    Invité(e)
    Par défaut
    Woaw
    Trop biennn !
    Tu m'as bien mis sur la voie !
    C'est donc FindWindows qui permet d'indiquer la fenêtre !
    Merci pour le temps que tu as due mettre à me répondre ceci !
    Je pense que c'est presque bon ^^
    Car Jusqu’à SetWindowsPos, tout marche, après c'est la cata !
    Cela provient donc de SetWindowsPos ...
    Quelqu’un aurait-il une idée de comment faire marché ceci ?

  4. #4
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Il suffit de gratter sur la docs
    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

    BOOL WINAPI SetWindowPos(
    __in HWND hWnd,
    __in_opt HWND hWndInsertAfter, <-- Optionnel
    __in int X,
    __in int Y,
    __in int cx,
    __in int cy,
    __in UINT uFlags
    );
    en gros ce qui est pas claire chez toi c'est :
    • hWndInsertAfter
      quand tu regarde un peut, tu voit que c'est pour postionner ta fentre au premier plan, au dernier etc.
      je te conseil de créer des constantes pour ça: *plus clair*
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
       Private Const HWND_BOTTOM As Integer = 1
       Private Const HWND_NOTOPMOST As Integer = -2
       Private Const HWND_TOP As Integer = 0	
       Private Const HWND_TOPMOST As Integer = -1
    • uFlags <- surtout la j'ai pas vue de '0' dans les flags

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      Private Const SWP_ASYNCWINDOWPOS as As Integer = &H4000 'a confirmer pour la syntaxe en héxa
      Private Const SWP_DEFERERASE as As Integer = &H2000 
      Private Const SWP_DRAWFRAME as As Integer = &H0020  
      Private Const SWP_FRAMECHANGED as As Integer = &H0020  
      Private Const SWP_HIDEWINDOW as As Integer = &H0080   
      Private Const SWP_NOACTIVATE as As Integer = &H0010  
      Private Const SWP_NOCOPYBITS as As Integer = &H0100    
      'etc..
      T'est pas obligé de toutes les rentrées,
      une suffit, celle dont tu te sert


    voila suffit de regarder les docs
    Oublie pas de faire quelque chose de propre ou dans 2mois t'y va pleurer en regardant ton code

  5. #5
    Invité
    Invité(e)
    Par défaut
    Effectivement tout ceci est sur la doc
    Alors, j'ai lu très attentivement tout cela.
    Et voici où j'en suis :

    DECLARATION

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
        Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
     
        Private Const HWND_BOTTOM As Integer = 1
        Private Const HWND_NOTOPMOST As Integer = -2
        Private Const HWND_TOP As Integer = 0
        Private Const HWND_TOPMOST As Integer = -1
     
        Private Const SWP_ASYNCWINDOWPOS As Integer = &H4000
        Private Const SWP_DEFERERASE As Integer = &H2000
        Private Const SWP_DRAWFRAME As Integer = &H20
        Private Const SWP_FRAMECHANGED As Integer = &H20
        Private Const SWP_HIDEWINDOW As Integer = &H80
        Private Const SWP_NOACTIVATE As Integer = &H10
        Private Const SWP_NOCOPYBITS As Integer = &H100
    APPELLE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Dim hWnd As Long
        hWnd = FindWindow(Nothing, Fenetre.MainWindowTitle)
        SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 400, 400, X)
    Et a l’endroit où ce situ le petit X du code au dessus, je ne sais pas quoi y mettre
    En fait si, je sais que c'est un truc comme ça : SWP_NOZORDER, SWP_SHOWWINDOW, SWP_NOSIZE, SWP_NOREPOSITION, SWP_NOREDRAW ...
    Mais lequel choisir ...
    Je sais en tout cas que le code doit redimensionner en 400 X 400, déplacer en 0 (en haut a gauche) et il doit mettre la fenêtre au 1er plan.
    Aurais-tu une idée ?

  6. #6
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Je viens de trouver ce petit lien
    http://social.msdn.microsoft.com/For...6-ee4f399f1911

    arréte toi à HWND_TOP pour mettre ta fenêtre au premier plan.
    le HWND_TOPMOST positionne ta fenêtre par dessus toutes les autre, mais le truc c'est qu'elle reste constamment au premier plan *je m'en sert justement*

    bref ce que je te conseil c'est de mettre ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
        Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
     
        Private Const HWND_BOTTOM As Integer = 1
        Private Const HWND_NOTOPMOST As Integer = -2
        Private Const HWND_TOP As Integer = 0
        Private Const HWND_TOPMOST As Integer = -1
     
        Private Const SWP_SHOWWINDOW As Integer = &H40
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim hWnd As Long
        hWnd = FindWindow(Nothing, Fenetre.MainWindowTitle)
        SetWindowPos(hWnd, HWND_TOP, 0, 0, 400, 400, SWP_SHOWWINDOW)
    Voila, j’espère que c'est pas faux
    *j'ai rien testé*

Discussions similaires

  1. ouvrir une page web dans une autre fenetre
    Par griese dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/06/2006, 11h32
  2. [C#][Débutant] Comment lancer une methode d'une autre fenetre
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/04/2006, 23h17
  3. [C#] Ouvrir un fichier PDF dans une autre fenetre
    Par ZePostman dans le forum ASP.NET
    Réponses: 3
    Dernier message: 15/03/2006, 13h41
  4. ADROTATOR, Ouvrir la pub dans une autre fenetre
    Par ahage4x4 dans le forum ASP
    Réponses: 4
    Dernier message: 10/02/2006, 16h24
  5. Afficher les élements d'un formulaire dans une autre fenetre
    Par BernardT dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/12/2005, 22h52

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