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 6 et antérieur Discussion :

fenetre modal


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut fenetre modal
    Bonjour a tous,
    j'ai cree le module pour pouvoir choisir une couleur ... le truc c que j'aimerais que ce composant soit modal. Comment fair sachant que ce composant n'existe pas ds les composants par default de VB ??

    merci de votre reponse

    Jerome

  2. #2
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Pour afficher une feuille de manière modale, il faut procéder ainsi :

    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Par défaut
    ok mais c pas vraiement un formulaire:
    j'ai un module avec le code suivant ::
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
     
    Declare Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As CHOOSECOLORS) As Long
    Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Declare Function GetCurrentThreadId Lib "KERNEL32" () As Long
    Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
    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
     
    Public Const OFS_MAXPATHNAME = 256
     
    Type CHOOSECOLORS
        lStructSize As Long
        hwndOwner As Long
        hInstance As Long
        rgbResult As Long
        lpCustColors As String
        flags As Long
        lCustData As Long
        lpfnHook As Long
        lpTemplateName As String
    End Type
     
    Public Const COLOROKSTRING = "commdlg_ColorOK"
     
    Public Type SelectedColor
        oSelectedColor As OLE_COLOR
        bCanceled As Boolean
    End Type
     
    Public ColorDialog As CHOOSECOLORS
     
     
    Public Function ShowColor(ByVal hWnd As Long, Optional ByVal centerForm As Boolean = True) As SelectedColor
    Dim customcolors() As Byte  ' dynamic (resizable) array
    Dim i As Integer
    Dim ret As Long
    Dim hInst As Long
    Dim Thread As Long
     
        ParenthWnd = hWnd
        If ColorDialog.lpCustColors = "" Then
            ReDim customcolors(0 To 16 * 4 - 1) As Byte  'resize the array
     
            For i = LBound(customcolors) To UBound(customcolors)
              customcolors(i) = 254 ' sets all custom colors to white
            Next i
     
            ColorDialog.lpCustColors = StrConv(customcolors, vbUnicode)  ' convert array
        End If
     
        ColorDialog.hwndOwner = hWnd
        ColorDialog.lStructSize = Len(ColorDialog)
        ColorDialog.flags = COLOR_FLAGS
     
         'Set up the CBT hook
        hInst = GetWindowLong(hWnd, GWL_HINSTANCE)
        Thread = GetCurrentThreadId()
        If centerForm = True Then
            hHook = SetWindowsHookEx(WH_CBT, AddressOf WinProcCenterForm, hInst, Thread)
        Else
            hHook = SetWindowsHookEx(WH_CBT, AddressOf WinProcCenterScreen, hInst, Thread)
        End If
     
        ret = ChooseColor(ColorDialog)
        If ret Then
            ShowColor.bCanceled = False
            ShowColor.oSelectedColor = ColorDialog.rgbResult
            Exit Function
        Else
            ShowColor.bCanceled = True
            ShowColor.oSelectedColor = &H0&
            Exit Function
        End If
    End Function
     
    Private Function WinProcCenterScreen(ByVal lMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        Dim rectForm As RECT, rectMsg As RECT
        Dim x As Long, y As Long
        If lMsg = HCBT_ACTIVATE Then
            'Show the MsgBox at a fixed location (0,0)
            GetWindowRect wParam, rectMsg
            x = Screen.Width / Screen.TwipsPerPixelX / 2 - (rectMsg.Right - rectMsg.Left) / 2
            y = Screen.Height / Screen.TwipsPerPixelY / 2 - (rectMsg.Bottom - rectMsg.Top) / 2
            Debug.Print "Screen " & Screen.Height / 2
            Debug.Print "MsgBox " & (rectMsg.Right - rectMsg.Left) / 2
            SetWindowPos wParam, 0, x, y, 0, 0, SWP_NOSIZE Or SWP_NOZORDER Or SWP_NOACTIVATE
            'Release the CBT hook
            UnhookWindowsHookEx hHook
        End If
        WinProcCenterScreen = False
    End Function
     
    Private Function WinProcCenterForm(ByVal lMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        Dim rectForm As RECT, rectMsg As RECT
        Dim x As Long, y As Long
        'On HCBT_ACTIVATE, show the MsgBox centered over Form1
        If lMsg = HCBT_ACTIVATE Then
            'Get the coordinates of the form and the message box so that
            'you can determine where the center of the form is located
            GetWindowRect ParenthWnd, rectForm
            GetWindowRect wParam, rectMsg
            x = (rectForm.Left + (rectForm.Right - rectForm.Left) / 2) - ((rectMsg.Right - rectMsg.Left) / 2)
            y = (rectForm.Top + (rectForm.Bottom - rectForm.Top) / 2) - ((rectMsg.Bottom - rectMsg.Top) / 2)
            'Position the msgbox
            SetWindowPos wParam, 0, x, y, 0, 0, SWP_NOSIZE Or SWP_NOZORDER Or SWP_NOACTIVATE
            'Release the CBT hook
            UnhookWindowsHookEx hHook
         End If
         WinProcCenterForm = False
    End Function
    et en fait il me fauderait la facon c a dire trouver la fonction a declarer pour afficher une fenettre en modale
    comme la fonction SetWindowPos () de la librairie user32


    merci de me repondre,

    Jerome

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

Discussions similaires

  1. liberation de memoire d une fenetre modale
    Par ienien dans le forum MFC
    Réponses: 6
    Dernier message: 04/01/2006, 13h53
  2. Réponses: 4
    Dernier message: 24/11/2005, 09h34
  3. Fenetre modale | Des threads en javascript ?
    Par siddh dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/11/2005, 12h06
  4. Comment fermer une Fenetre Modal avec Code ?
    Par Soulama dans le forum Langage
    Réponses: 19
    Dernier message: 13/07/2005, 11h17
  5. Touche "Entrée" et fenetre modale
    Par pascalT dans le forum Composants VCL
    Réponses: 5
    Dernier message: 21/07/2004, 16h57

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