mdi child toujours visible, c impossible??? [vb6] - VB/VBA/VBS - Programmation
Marsh Posté le 10-08-2003 à 03:49:17
C'est normal ... tu passe l'hWnd de la grande feuille. Il faut que tu récuperes l'hWnd des feuilles fille (via FindWindow, par exemple) et tu passes l'hWnd retourné à SetWindowPos.
Marsh Posté le 10-08-2003 à 04:16:42
tu veu parler de Form1.hWnd? paske Form1 c le nom de la ptite mdi child
Marsh Posté le 10-08-2003 à 04:23:22
Tu es sur ?? bizarre ... je n'ai jamais fait d'application MDI mais bon, je ne vois pas pourquoi ca ne s'appliquerais pas dans ce contexte
MAJ : ca vient peut etre de ton flag, je fais pour ma part
SetWindowPos Form1.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
Marsh Posté le 10-08-2003 à 11:55:52
|
Code :
|
|
Code :
|
va sur ma signature API WINDOWS. sa vient de là. Les constantes comme les fonctions se déclare dans les modules en mode public ou en private avant le code à proprement dit, comme montré dans l'exemple. Les constantes n'ont rien à faire dans la code....comme je le vois. Tu mets juste leur valeur et uniquement !
Marsh Posté le 10-08-2003 à 13:33:13
Je ne pense pas que ca vienne de la, tu peux tres bien déclarer les constantes dans le bloc de la fonction PositionForm. Non, je pense que ca vient de son hWnd, il doit croire que le form1.hWnd correspond a celui de sa fenêtre MDI mais chaque fenêtre fille à son propre hWnd ...
Marsh Posté le 10-08-2003 à 15:41:22
karlkox a écrit : Je ne pense pas que ca vienne de la, tu peux tres bien déclarer les constantes dans le bloc de la fonction PositionForm. Non, je pense que ca vient de son hWnd, il doit croire que le form1.hWnd correspond a celui de sa fenêtre MDI mais chaque fenêtre fille à son propre hWnd ... |
je pense également, mais quand je vois des constantes déclarés, comme il le fait dans son code, sa fait bizarre !
Marsh Posté le 17-08-2003 à 16:30:24
merci pour toute vos reponses mais j'ai toujours ce probleme, voila ce que je fait et ca marche pas http://kabee.free.fr/contacts_spac [...] ditest.zip
ya forcement quelque chose que je fait pas correctement mais koi
dans mon exemple au dessus je voudrait juste que form2 soit toujours visible
Marsh Posté le 17-08-2003 à 20:00:20
Je viens de regarder mais tu ne peux pas mêttre que la form2 visible, il faut que la form mère (MDIform) le soit aussi.
Marsh Posté le 18-08-2003 à 12:12:05
tu auras une feuille qui saura toujours au dessus d'une autre ! c'est quelques choses d'évident ! Si tu veux afficher la feuille trois, pour y faire des manip, tu ne peux pas demander à la deux d'être au premier plan, c'est pas jouable et inversement! Et ce quels soient au des fenêtres filles MDI ou "normal"...
Aprés si tu veux afficher ta feuille 2 au premier plan, pour une raison quelconque, tu peux le faire avec l'API windows.
Personellement, - je n'ai pas essayé avec les feuilles fille MDI - je l'ai fais avec des feuilles normal et le code vérifier et revéfifier, n'as jamais fonctionner, sauf dans le cas d'un projet avec uniquement deux feuilles...j'avais toujours la feuille que je voulais mettre au premier plan, en arrière plan, ou dans la barre des tâches. Elle ne prenait pas la priorité sur une application X, comme Word ou quelques choses comme ça. C'est peut-être VB qui ne digère pas cette API windows dans certains des cas. Il faut vérifier.
Marsh Posté le 22-08-2003 à 18:46:07
cvb a écrit : tu auras une feuille qui saura toujours au dessus d'une autre ! c'est quelques choses d'évident ! Si tu veux afficher la feuille trois, pour y faire des manip, tu ne peux pas demander à la deux d'être au premier plan, c'est pas jouable et inversement! Et ce quels soient au des fenêtres filles MDI ou "normal"... |
mais pourtant j'ai deja vu des appli vb avec des mdi dont une été toujours visible quand l'utilisateur le désirai donc je c'est que c'est possible. C'est forcement moi qui utilise mal l'api windows.
Marsh Posté le 22-08-2003 à 19:47:42
fils_de_la_lumiere a écrit : |
ne confonds tu pas avec avec les feuilles modal et non modal, dans ce cas là c'est trés simple, la feuille en arrière plan n'est pas accessible et le code est trés simple :
load form1
form1.show 1
@+
Marsh Posté le 22-08-2003 à 21:07:11
cvb a écrit : |
lorsque que je lui dit ça il me répond assez explicitement :
Les feuilles MDI filles ne peuvent pas être affichées modalement. Mais bon c form1.show 1 qui renvoie cette erreur, je suis casi sur qu'avec une api bien faite on peut faire afficher une mdi fille toujours visible par rapport aux autres MDI fille
Marsh Posté le 22-08-2003 à 22:22:43
fils_de_la_lumiere a écrit : |
Personellement, je n'en connais pas. Essaye sur http://www.mentalis.org/ tu as + de 900 API windows à feuilleté ! si tu as des problème avec ta connection, aucun problème, tu peux télécharger une application, qui fonctionne trés bien !
Ensuite concernant l'erreur, je parlais pour des feuilles non MDI qui elle peuvent être modal ! Aprés concernant. Si tu trouves n'hésite pas à nous fournir la solution, sa fera avancé les choses. Perso, sa m'interesse !
Marsh Posté le 10-08-2003 à 01:31:37
j'ai dans un feuille mdi
- une form qui prend tout la largeur & longeur
- et un petit form de 100x100
je voudrai que la petite form soit toujours visible dans la feuille mdi meme si on clic sur la grande form
j'ai mis ca dans un module :
Declare Sub 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)
et ca dans la form parent
Form1.Show
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
SetWindowPos Form1.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW
mais ca marche pas et ca fait 8 heure que je suis dessus est ce que qq1 peut me depanner ca m'aiderai vraiment
merci