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 :

Rendre une forme CHILD non ACTIVABLE


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut Rendre une forme CHILD non ACTIVABLE
    Bonjour

    J'ai une fenêtre MDI contenant 2 fenêtres enfant

    Une fenêtre maitre et la secondaire contenant des boutons
    Je veux que lorsqu'on click sur un bouton de la deuxième feuille,
    la première fenêtre ne perd pas le focus

    j'ai essayé ce code
    if fonctionne très bien sur une fenêtre normal
    mais pas dans ce contexte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Const WS_EX_NOACTIVATE  As Integer = &H8000000
    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            cp.ExStyle = cp.ExStyle Or WS_EX_NOACTIVATE
            cp.Parent = IntPtr.Zero
            Return cp
        End Get
    End Property
    OU

    éventuellement transformé cette deuxième feuille en user control non activable
    que je poserai sur la fenêtre MDI

    l'a transformer en user control
    je sais le faire mais pas en NON ACTIVABLE

    Merci

  2. #2
    Membre averti
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut
    Bon, voila l'astuce
    j'ai mélangé tous ce que je connais en API
    et sa fonctionne

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Declare Function ShowWindowAsync Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal nCmdShow As Integer) As Integer
    Private Const SW_SHOWNOACTIVATE As Integer = 4i
     
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As IntPtr, ByVal nCmdShow As Int32) As Int32
    Private Declare Function SetParent Lib "user32" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer
     
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As IntPtr, ByVal nIndex As Integer) As Integer
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer
    Private Const GWL_EXSTYLE As Integer = (-20)
    Private Const GWL_STYLE As Integer = (-16)
    Private Const WS_CHILD  As Integer= &H40000000
    Private Const WS_EX_NOACTIVATE  As Integer = &H8000000
     
     
    Public Sub MyShow(ByVal hWndParent As IntPtr)
     
        Dim GwlLExStyles As Integer = GetWindowLong(Me.Handle, GWL_EXSTYLE)
        Dim GwlStyles As Integer = GetWindowLong(Me.Handle, GWL_STYLE)
     
        SetWindowLong (Me.Handle, GWL_EXSTYLE, (GwlExStyles Or WS_EX_NOACTIVATE))
        SetWindowLong (Me.Handle, GWL_STYLE, (GwlStyles Or WS_CHILD))
        SetWindowLong (Me.Handle, GWL_HWNDPARENT, hWndParent.ToInt32)
     
        SetParent(Me.Handle, hWndParent)
     
        ShowWindowAsync(Me.Handle, SW_SHOWNOACTIVATE)
    End Sub
    l'ordre d'appel des APIs est important
    si vous mettez SetParent en premier, la fenêtre prend le focus

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/08/2006, 10h22
  2. Rendre une form visible avant de la minimiser
    Par WebPac dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 29/03/2006, 17h16
  3. rendre une form visible sans lui donner le focus
    Par kchrel dans le forum Access
    Réponses: 4
    Dernier message: 24/01/2006, 15h37
  4. Comment rendre une form transparente à certains endroits ?
    Par ludo5532 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 21/08/2005, 15h28
  5. Rendre une fenêtre modale non modale
    Par Smortex dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/03/2003, 17h56

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