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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] Fenêtres semi-modales...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB] Fenêtres semi-modales...

n°681612
Lancelot**
All I do is kiteboarding
Posté le 23-03-2004 à 16:42:49  profilanswer
 

Salut à tous
 
Je souhaiterais afficher une fenêtre (Form) en mode semi-modal, c'est-a-dire que cette fenêtre reste toujours au 1er plan à l'écran mais il est quand même possible de cliquer sur d'autres fenêtres derrières.
 
Comment puis-je faire ça?
 
VB ne propose que 2 méthodes: vbModal et vbModeless
 
PS: toutes mes fenêtres appartiennent à la même application

mood
Publicité
Posté le 23-03-2004 à 16:42:49  profilanswer
 

n°681622
HelloWorld
Salut tout le monde!
Posté le 23-03-2004 à 16:47:27  profilanswer
 

C'est pas modal ça, c'est topmost.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°681643
ixemul
Nan mais sans blague ! ⚡
Posté le 23-03-2004 à 16:56:37  profilanswer
 

Possible avec une API
 
A mettre de préference dans un module séparé

Code :
  1. 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
  2. Public Sub FormOnTop(hWindow As Long, bTopMost As Boolean)
  3. ' Example: Call FormOnTop(me.hWnd, True)
  4.     Const SWP_NOSIZE = &H1
  5.     Const SWP_NOMOVE = &H2
  6.     Const SWP_NOACTIVATE = &H10
  7.     Const SWP_SHOWWINDOW = &H40
  8.     Const HWND_TOPMOST = -1
  9.     Const HWND_NOTOPMOST = -2
  10.    
  11.     wFlags = SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW Or SWP_NOACTIVATE
  12.    
  13.     Select Case bTopMost
  14.     Case True
  15.         Placement = HWND_TOPMOST
  16.     Case False
  17.         Placement = HWND_NOTOPMOST
  18.     End Select
  19.    
  20.     SetWindowPos hWindow, Placement, 0, 0, 0, 0, wFlags
  21. End Sub


 
A mettre dans l'evennement Load de la forme que tu veux garder en premier plan:

Code :
  1. Private Sub Form_Load()
  2.     Call FormOnTop(Me.hWnd, True)
  3. End Sub


 
:)

n°681646
Lancelot**
All I do is kiteboarding
Posté le 23-03-2004 à 16:57:57  profilanswer
 

topmost= au 1er plan par rapport à toutes les autres fenêtres de Windows
 
Moi je veux juste que ce soit par rapport à toutes les fenêtres de cette appli (MDI) uniquement. Est-ce possible?

n°681649
Lancelot**
All I do is kiteboarding
Posté le 23-03-2004 à 16:59:29  profilanswer
 

Merci ixemul !
 
"A mettre de préference dans un module séparé " <<-- pourquoi au juste?

n°681651
ixemul
Nan mais sans blague ! ⚡
Posté le 23-03-2004 à 17:00:26  profilanswer
 

Lancelot** a écrit :

Merci ixemul !
 
"A mettre de préference dans un module séparé " <<-- pourquoi au juste?


 
Paske c'est plus propre  :o  
 

n°681661
Lancelot**
All I do is kiteboarding
Posté le 23-03-2004 à 17:04:36  profilanswer
 

:lol: je m'attendais pas à cette réponse!!!
 
Je pensais que t'allais me parler de stabilité...
Je trouve pas que c'est tellement plus propre.

n°681664
ixemul
Nan mais sans blague ! ⚡
Posté le 23-03-2004 à 17:06:22  profilanswer
 

bha, question de "philosophie de developpement", j'aime bien mettre toutes mes declaration d'API a part du reste de mon programme ;)

n°681674
drasche
Posté le 23-03-2004 à 17:11:37  profilanswer
 

pareil, les API dans VB, ça reste quand même sacrément dégueulasse à regarder -> module dédié et elles sont encapsulées dans de belles fonctions VB :)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°681683
Lancelot**
All I do is kiteboarding
Posté le 23-03-2004 à 17:18:31  profilanswer
 

bon sinon y'a un truc bizarre ixemul
Ma fenêtre affichée en mode topmost perd instantanément "la main" (ou le focus). Et j'ai beau cliquer dessus (sur la barre de titre), c'est comme si je cliquais sur la fenêtre de derrière.
 
Par ailleurs, j'aurais aimer mettre ma fenêtre en topmost juste par rapport à l'appli et non à Windows tout entier. :)

mood
Publicité
Posté le 23-03-2004 à 17:18:31  profilanswer
 

n°681692
Lancelot**
All I do is kiteboarding
Posté le 23-03-2004 à 17:22:52  profilanswer
 

je pense que je vais trouver. Suffit de modifier les constantes et d'utiliser HWND_TOP

n°681713
ixemul
Nan mais sans blague ! ⚡
Posté le 23-03-2004 à 17:37:38  profilanswer
 

"Aides toi et le ciel t'aideras :o"
 
;)

n°681725
Lancelot**
All I do is kiteboarding
Posté le 23-03-2004 à 17:45:49  profilanswer
 

mouai... ceci dit j'y arrive pas! :(
T'as testé ton exemple?

n°681728
ixemul
Nan mais sans blague ! ⚡
Posté le 23-03-2004 à 17:48:41  profilanswer
 

non :)

n°681734
Lancelot**
All I do is kiteboarding
Posté le 23-03-2004 à 17:55:22  profilanswer
 

mouarf

n°681773
Lancelot**
All I do is kiteboarding
Posté le 23-03-2004 à 18:28:57  profilanswer
 

erf... Décidément je comprends pas pourquoi cette foutue fenêtre ne garde pas le focus. Est-ce parce que mes autres fenêtres derrières sont en mode modal?

n°681785
ixemul
Nan mais sans blague ! ⚡
Posté le 23-03-2004 à 18:36:31  profilanswer
 

Lancelot** a écrit :

erf... Décidément je comprends pas pourquoi cette foutue fenêtre ne garde pas le focus. Est-ce parce que mes autres fenêtres derrières sont en mode modal?


 
 :ouch: Evidemment !

n°681798
Lancelot**
All I do is kiteboarding
Posté le 23-03-2004 à 18:46:54  profilanswer
 

arg! ça peut pas marcher alors!
Tant pi
 
Merci pour tout

n°682174
HelloWorld
Salut tout le monde!
Posté le 24-03-2004 à 08:22:47  profilanswer
 

Comment il peut avoir plusieurs fenêtres modales en même temps dans son appli ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°682321
Lancelot**
All I do is kiteboarding
Posté le 24-03-2004 à 10:37:00  profilanswer
 

VB l'autorise
Par contre dès qu'une fenêtre est modale, on ne peut afficher une nouvelle fenêtre en mode modeless (logique)

n°683429
HelloWorld
Salut tout le monde!
Posté le 24-03-2004 à 23:48:37  profilanswer
 

Ce que je veux dire :

Code :
  1. win1.ShowModal()
  2. win2.ShowModal()


win2 ne sera pas montrée tant que win1 ne sera pas fermé...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°683462
drasche
Posté le 25-03-2004 à 07:16:25  profilanswer
 

euh ça c'est du .NET il me semble, on n'était pas en VB(6)(A) là? :D


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°683524
Lancelot**
All I do is kiteboarding
Posté le 25-03-2004 à 09:34:30  profilanswer
 

sisi VB6 ruleeeezzzzzzzzzzzzz :lol:

mood
Publicité
Posté le   profilanswer
 


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

  [VB] Fenêtres semi-modales...

 

Sujets relatifs
Pas de saisie semi-automatiqueGros mystère inside - Problême avec sessions et plusieurs fenêtres
Tkinter et des fenetres filles!!passage de paramètres entre 2 fenètres html
[JS]Gestion de fenêtresFenetres et menus...
[VB6] PB avec des modales + rafraichissement datagridProblème de fenêtres modale et non-modale sur VC++
PHP GD, melanger 2 IMAGES, un PNG semi transparent et un PNG "normal"[JS] Dialogue entre fenêtres
Plus de sujets relatifs à : [VB] Fenêtres semi-modales...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR