Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2767 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Agrandir une fenetre en VB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Agrandir une fenetre en VB

n°706513
gourdin
Posté le 22-04-2004 à 23:03:59  profilanswer
 

Salut TLM c'est encore moi (cf message plus bas).
J'aimerais savoir comment on fait pour agrandir une fenetre qui est presente dans la barre des taches, comme un fichier texte par exemple, pour la mettre en premier plan à l'écran.
J'ai essayé avec un API (instruction showwondow) mais j'arrive pas a m'en servir. Voila la syntaxe pour appeler cette fonction :
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
 
Je fais quoi avec ça?
Merci à tous.

mood
Publicité
Posté le 22-04-2004 à 23:03:59  profilanswer
 

n°706687
JihemAir
Je sais pas
Posté le 23-04-2004 à 08:45:07  profilanswer
 

OK. Je n'ai pas été très sympa hier. Sans doute de mauvais poil. Voila une solution.
Accroche toi, on y va.....
 
A copier en tête de procédure, au niveau des déclarations globales:
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 Declare Function OpenIcon Lib "user32" _
        (ByVal hwnd As Long) As Long
Private Declare Function GetWindow Lib "user32" _
        (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" _
        Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowText Lib "user32" _
        Alias "GetWindowTextA" (ByVal hwnd As Long, _
        ByVal lpSting As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowLong Lib "user32" _
        Alias "GetWindowLongA" (ByVal hwnd As Long, _
        ByVal wIndx As Long) As Long
 
Const GW_HWNDFIRST = 0          ' Handle de la 1ere fenetre
Const GW_HWNDNEXT = 2           ' Handle de la prochaine fenetre
Const GWL_STYLE = (-16)         ' Récupère le style de la fenetre
Const HWND_TOPMOST = -1         ' Force la fenetre au 1er plan.
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
 
A copier dans la procédure qui doir ouvrir ta fenêtre:
Dim hwCurr As Long
Dim intLen As Long
Dim strTitle As String, Appli As String
 
    hwCurr = GetWindow(Me.hwnd, GW_HWNDFIRST)  ' On commence par la premiere fenetre
    Do While hwCurr  ' On boucle sur toutes les fenetres
        If hwCurr <> Me.hwnd And TaskWindow(hwCurr) Then ' On ignore la fenetre du prog.
            intLen = GetWindowTextLength(hwCurr) + 1 ' Longueur de la caption de fenetre
            strTitle = Space$(intLen) ' Caption de fenetre
            intLen = GetWindowText(hwCurr, strTitle, intLen)
            If intLen > 0 Then ' Si la fenetre a une caption interessante..
                If InStr(1, strTitle, "Excel", vbTextCompare) > 1 _ Then  ' On regarde si c'est la bonne
                    OpenIcon (hwCurr) ' Miracle!!! la fenetre s'ouvre !!!
                    SetWindowPos hwCurr, HWND_TOPMOST, 0, 0, 0, 0, _ SWP_NOMOVE + SWP_NOSIZE
                    Exit Do ' Le boulot est fait. On sort.
                End If
            End If
        End If
        hwCurr = GetWindow(hwCurr, GW_HWNDNEXT) ' On passe à la suivante
    Loop
 
Petite fonction à ajouter à la fin de ton code:
Function TaskWindow(hwCurr As Long) As Long
Dim lngStyle As Long
Dim IsTask As Long
 
    ' Voyons si la fenetre est une tache qui nous interesserait....
    lngStyle = GetWindowLong(hwCurr, GWL_STYLE)
    If (lngStyle And IsTask) = IsTask Then TaskWindow = True
End Function
 
 
Cet exemple fonctionne avec Excel réduit en icone. Pour l'adapter à ton cas, remplace la chaine "Excel" par une partie du titre de ton appli à ouvrir.
 


---------------
J'ai un message.."Cliquez OK pour continuer."...Qu'est ce que je fais ?
n°706704
JihemAir
Je sais pas
Posté le 23-04-2004 à 09:25:48  profilanswer
 

2 remarques:
1)
If InStr(1, strTitle, "Excel", vbTextCompare) > 0 then
est plus judicieux que
If InStr(1, strTitle, "Excel", vbTextCompare) > 1 then
si la chaine à chercher commence au 1er caractere, >1 ne fonctionne pas.
 
2)
SetWindowPos hwCurr, HWND_TOPMOST, .....
la constante HWND_TOPMOST a pour but de forcer la fenêtre ouverte à rester devant, au 1er plan. Si tu préfères la laisser normale, remplace cette constante par 0 (zéro).
 


---------------
J'ai un message.."Cliquez OK pour continuer."...Qu'est ce que je fais ?
n°706890
gourdin
Posté le 23-04-2004 à 11:33:45  profilanswer
 

Alors la je dis MONSIEUR JihEmAir ! Merci énromément, ton code marche parfaitement et j'ai su l'adapter pour ouvrir une de mes fenetre. Je te remercie vraiment énormément, car étant en stage niveau bac +2, je restais calé a ce niveau (a noter qu'il est 11:31 et que j'essaie depuis 8h30 ce matin!!) et là je sais meme plus quoi dire tellement chuis content . YEEEeeeeeeeeeepaa !!!  Vive les gens qu'aide les débutants !!
A plus sur le forum et merci d'avoir passer du temps sur le code, tu peux au moins etre satisfait d'avoir fait un heureux ! :-p


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Agrandir une fenetre en VB

 

Sujets relatifs
afficher une fenetre en avant plan[JAVASCRIPT] - Comment ouvrir 1 fenetre sur la meme page ?
Confusion de JS: Fermer / actualiser une fenetreA l'ouverture du pop-up, ma fenêtre principale remonte
Rafraichir une iframe contenue dans une autre fenetreRéduction de fenêtre
calque qui suit le défilement de la fenêtreRecupérer le handle d'une fenetre
Ouvrir une application à l'interieur de la fenetre de mon navigateur 
Plus de sujets relatifs à : Agrandir une fenetre en VB


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)