begin process at 2012 02 12 03:59:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

Enlever TOPMOST à une fenêtre


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Enlever TOPMOST à une fenêtre

lundi 7 juillet 2008 à 11:41:02 | Enlever TOPMOST à une fenêtre

HeXoR

Bonjour, je précise un peu ma question : je souhaiterais enlever le statut de "TOPMOST" à une fenêtre contenue dans une autre application. En fait, elle est en "TOPMOST" seulement pour la dite application, pas pour toute les fenêtres en général. En d'autres termes, cette fenêtre bloque toute interaction (clique de souris, ...) avec la fenêtre principale de l'application.
Bien entendu, il est supposé que j'ai le Handle (hWnd) de la fenêtre.
J'ai essayé l'attribut "HWND_NOTOPMOST" avec l'API SetWindowText, mais hélas sans résultat.
lundi 7 juillet 2008 à 11:52:49 | Re : Enlever TOPMOST à une fenêtre

gillardg

API          SenMessage???

               PostMessage???

lundi 7 juillet 2008 à 12:17:28 | Re : Enlever TOPMOST à une fenêtre

HeXoR

Oui... mais que mettre comme paramètres ?
lundi 7 juillet 2008 à 13:21:27 | Re : Enlever TOPMOST à une fenêtre

bouv

Membre Club

Tu te trompes d'API, il ne faut pas utiliser SetWindowText mais SetWindowPosition.


PLACE CE CODE DANS UN MODULE :

Option Explicit

Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
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 Type RECT
   Left                 As Long
   Top                  As Long
   Right                As Long
   Bottom               As Long
End Type

'Pour le premier plan
Private Const Flags = 1
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2

Public Enum WindowPositionConstants
    [Window Top Always] = 0         'TOPMOST : TOUJOURS AU PREMIER PLAN
    [Window Top Now] = 1            'FOREGROUND : PLACE AU PREMIER PLAN MAIS NE MAINTIENT PAS
    [Window Normal] = 2             'NOTOPMOST : RETIRE LE STATUT TOPMOST
End Enum

Public Function SetWindowPosition(ByVal hWnd As Long, _
                                  ByVal wPosition As WindowPositionConstants) As Long
    Dim Success As Long
    Dim rPOS As RECT
    Select Case wPosition
        Case [Window Top Always]
            Call GetWindowRect(hWnd, rPOS)
            Success = SetWindowPos(hWnd, HWND_TOPMOST, rPOS.Left, rPOS.Top, 0, 0, Flags)
        Case [Window Top Now]
            Success = SetForegroundWindow(hWnd)
        Case [Window Normal]
            Call GetWindowRect(hWnd, rPOS)
            Success = SetWindowPos(hWnd, HWND_NOTOPMOST, rPOS.Left, rPOS.Top, 0, 0, Flags)
    End Select
    SetWindowPosition = Success
End Function


Tu peux ensuite utiliser la fonction SetWindowPosition avec le bon parametre pour faire ce que tu veux de ta fenêtre.

Bonne prog
++

lundi 7 juillet 2008 à 13:32:05 | Re : Enlever TOPMOST à une fenêtre

PCPT

Administrateur CodeS-SourceS
salut,

si elle bloque toute interactivité je penche plus pour un équivalent de VBMODAL plutôt qu'un TOPMOST, non?...


Prenez un instant pour répondre à ce sondage svp  
lundi 7 juillet 2008 à 13:42:40 | Re : Enlever TOPMOST à une fenêtre

HeXoR

Salut à tous.
Rien à faire bouv, ta méthode ne semble pas fonctionner pour les fenêtres enfants (?). Elle ne marche que pour les fenêtres principales des applis. :(
Je pense que PCPT a raison, il faudrait un équivalent de VBMODAL

lundi 7 juillet 2008 à 14:00:26 | Re : Enlever TOPMOST à une fenêtre

PCPT

Administrateur CodeS-SourceS
avec çà on sera déja fixés....

Private Const GWL_STYLE   As Long -16
Private Const WS_DISABLED As Long &H8000000
'
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As LongByVal nIndex As Long) As Long
'
Public Function IsModal(ByVal lHandle As Long) As Boolean
    IsModal = ((GetWindowLong(lHandle, GWL_STYLE) And WS_DISABLED) = WS_DISABLED)
End Function



Prenez un instant pour répondre à ce sondage svp  
lundi 7 juillet 2008 à 14:06:50 | Re : Enlever TOPMOST à une fenêtre

HeXoR

Raaaaaaaaah. Not modal !
comprends pas :(
lundi 7 juillet 2008 à 14:08:16 | Re : Enlever TOPMOST à une fenêtre

bouv

Membre Club
Es-tu sûr du Handle de ta fenêtre ? Comment le récupères-tu ?

Bonne prog
++
lundi 7 juillet 2008 à 14:13:36 | Re : Enlever TOPMOST à une fenêtre

HeXoR

Oui j'en suis sûr, j'ai un code qui me liste les fenêtre avec leur handle et leur titre. J'ai pas de doute là dessus

1 2

Cette discussion est classée dans : application, fenêtre, hwnd, enlever, topmost


Répondre à ce message

Sujets en rapport avec ce message

Récupérer le N° (hwnd) d'une application [ par luxpo ] Comment faire pour récipérer le N° hwnd d'une fenêtre ?Merci Comment changer la forme du curseur en dehors de la fenêtre d'application ? [ par lnaintre ] Bonjour à tous,Voilà, j'ai crée une petite appli qui donne les coordnnées x et y du curseur sur l'écran. Et j'aimerai changer la forme du curseur en d changer la forme du curseur de la souris en dehors de la fenêtre d'application [ par lnaintre ] Bonjour à tous,Voilà, j'ai crée une petite appli qui donne les coordnnées x et y du curseur sur l'écran. Et j'aimerai changer la forme du curseur de l Comment changer la forme du curseur de la souris en dehors de la fenêtre d'application ? [ par lnaintre ] Bonjour à tous,Voilà, j'ai crée une petite appli qui donne les coordnnées x et y du curseur sur l'écran. Et j'aimerai changer la forme du curseur de l Comment ouvrir un exe dans une fenêtre vb ?? [ par matmut ] Je voudrais avoir des renseignements sur la façon de procéder pour afficher une application exterieur à vb (*.exe) à l'intérieur de l'application vb q Trouver le nom d'une fenêtre a partir de son hwnd [ par TequilaTex ] Bonjour,Savez vous comment je peux trouver le nom du fenêtre dans mon projet en connaissant uniquement son hwnd? Handle hWnd - descripteur Fenêtre [ par vbost ] Je trouve pratique d'utiliser les descripteurs de fenêtres afin de pouvoir naviguer d'une fenêtre à l'autre (comme de la fenêtre appellée vers la fenê Gérer une instance de l'application déjà lancée ??? [ par spiazzini ] VB fourni la propriété app.previnstance pour connaitre l'existence d'une instance précédente de l'applicationComment faire pour faire venir au premier Faire une application sans fenêtre (form) [ par TheBestofComputer ] Je voudrais savoir si c'est possible de crée une application sans fenetre et si c'est possible d'y mettre un controle Winsock.Merci Application MDI [ par Dinbougre ] voilà g une application MDI et j'utilise plusieurs fenêtres. En cliquant sur un bouton je veux ouvrir une petite fenêtre mais la fenêtre principal est


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,385 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales