Accueil > Forum > > > > [MFC] Dialog non modal
[MFC] Dialog non modal
jeudi 2 décembre 2004 à 11:16:49 |
[MFC] Dialog non modal

Helau
|
Bonjour, Mon application utilise des boites de dialogues non modales, car je suis obligée de faire un create et un show window, par forcément en même tps. Ceci dit, je souhaiterais qu'un fois ma boite affichée, elle ait le comportement d'une boite modale, càd que je ne puisse pas cliquer ailleurs tant que la boite n'est pas fermée (close, ok, cancel ou autre bouton) J'ai fait plusieurs essais non concluants (runmodalloop, beginmodalstate, le style "system modal dans mon dialog", soit ça ne fait rien, soit ça "freeze" mon appli qd je clique ailleurs que sur la boite.) Est ce que quelqu'un aurait une idée. Merci. Helau.
|
|
jeudi 2 décembre 2004 à 12:15:23 |
Re : [MFC] Dialog non modal

ymca2003
|
Désactiver le parent à l'affichage du dialogue et réactiver à la fermeture.
// ouverture : HWND hWndParent = PreModal(); BOOL bEnableParent = FALSE; if (hWndParent != NULL && ::IsWindowEnabled(hWndParent)) { ::EnableWindow(hWndParent, FALSE); bEnableParent = TRUE; }
// fermeture : if (bEnableParent) ::EnableWindow(hWndParent, TRUE); if (hWndParent != NULL && ::GetActiveWindow() == m_hWnd) ::SetActiveWindow(hWndParent); PostModal();
Tiré du code de la fonction DoModal de CDialog
|
|
jeudi 2 décembre 2004 à 14:25:53 |
Re : [MFC] Dialog non modal

Helau
|
Je suis désolée, ça ne marche pas !
Il n'est pas possible d'utiliser PreModal avec une boite modeless dejà créée !
HWND CDialog::PreModal() { // cannot call DoModal on a dialog already constructed as modeless ASSERT(m_hWnd == NULL);
.... }
Je ne sais pas trop comment faire. J'ai testé plusieurs idées, en essayant de me baser sur ce qui est fait dans DoModal, mais toujours sans succès.
Help, please !
Merci. Helau.
|
|
jeudi 2 décembre 2004 à 14:58:38 |
Re : [MFC] Dialog non modal

ymca2003
|
Et juste en faisant le EnableWindow() sur le parent et les autres dialogues non modaux de l'appli
|
|
vendredi 3 décembre 2004 à 09:29:18 |
Re : [MFC] Dialog non modal

Helau
|
Voici ce que j'ai testé :
m_bAfficheBoite = true;
CWnd *pWnd = ::AfxGetMainWnd(); // GetWindow(GW_OWNER); hWndParent = pWnd->GetSafeHwnd(); //AfxUnhookWindowCreate(); bEnableParent = FALSE; if (hWndParent != NULL && ::IsWindowEnabled(hWndParent)) { ::EnableWindow(hWndParent, FALSE); bEnableParent = TRUE; }
Si je fais ShowWindow(SW_SHOW) ensuite, ça affiche ma boite, mais mon appli est "gelée"
Si je fais ShowWindow(SW_SHOW) avant, ça affiche ma boite, mon edit qui a le focus est active (je peux écrire dedans) mais je ne peux pas acceder aux autres contrôles de mon dialog. (par souris ni par clavier).
La touche entrée est active et ferme ma boite (j'ai mis le code de "fermeture" sur le OnOK).
J'ai peut être oublié qqch qqpart...
Voici mon code de fermeture si besoin
if (m_bAfficheBoite) { if (bEnableParent) ::EnableWindow(hWndParent, TRUE); if (hWndParent != NULL && ::GetActiveWindow() == m_hWnd) ::SetActiveWindow(hWndParent); // destroy modal window // PostModal(); } m_bAfficheBoite = false;
CDialog::OnOK();
|
|
lundi 6 décembre 2004 à 12:01:16 |
Re : [MFC] Dialog non modal

Helau
|
Réponse acceptée !
Merci ymca2003, tu m'as bien aiguillée. Voici finalement ce que j'ai fait, et qui a l'air de marcher :
CWnd *pWnd = ::AfxGetMainWnd(); // GetWindow(GW_OWNER); hWndParent = pWnd->GetSafeHwnd(); //AfxUnhookWindowCreate(); bEnableParent = FALSE; if (hWndParent != NULL && ::IsWindowEnabled(hWndParent)) { ::EnableWindow(hWndParent, FALSE); bEnableParent = TRUE; }
EnableWindow(); ShowWindow(nCmdShow);
En fait, quand on désactive le parent, on désactive implicitement les enfants. Il suffit donc de dire que l'enfant ne doit pas rester déactivé.
A bientôt.
|
|
Cette discussion est classée dans : boite, dialog, mfc, modal, ailleurs
Répondre à ce message
Sujets en rapport avec ce message
Deux boite de dialog en MFC [ par aabhanane ]
Bonjour à tous, j'ai créer une appliaction MFC avec une boite de dialogue principale. J'ai créé un boutton dans cette boite de dialogue. Quand je cliq
Boite de Dialog type : CFormView [ par BlueReaver ]
BonjourJe suis obligé de travailler avec les MFC pour mon projet et je souhaiterai faire apparaitre une boite de dialog pour y afficher des Histogramm
Probléme de focus, de clavier sur boite de dialog [ par barraq ]
Bonjour, Je développe un interface composée d'une boite de dialogue et de plusieur static. Dans chaque static je lance plusieurs plugins, chaque plugi
réduction dans le systray d'une appli MFC Boite de dialogue [ par matt22 ]
Bonjour à tous et d'avance merci pour votre aide. Je suis pas très doué en C++ et j'ai un petit soft a faire absolument. j'ai fais un petit programme
Probleme Vue/dialog avec MFC [ par yann_lo_san ]
Salut, avec MFC :J'ai une vue parent et un dialog non modal enfant.J'essaye d'appeler une méthode du parent depuis le dialog enfant.// MyModelessDialo
Ajouter un menu dans une application MFC AppWizard (Dialog based ) [ par yaslikurk ]
Bonjour,En effet je suis un débutant en programmation C++ (avec MFC AppWizard).Cependant j'ai crée un projet WCE MFC AppWizard (avec embedded c++) et
Boite de Dialog non modale [ par orak ]
bonjour,pour creer mes boites de dialog, j'utilise habituellement la fonction "DialogBoxIndirect", qui creer une boite de dialog modale sans ressource
dialog modeless et blocage en arriere plan [ par v6comm89 ]
bonjourvoila mon probleme j'ai une fenetre de dialog qui doit tout le temps etre active elle permet de suivre les etapes, je l'ai donc mis en non moda
cree boite dialog dans DLL [ par bonjour__ ]
salut tous le monde.j'ai cherche comment cree les boite de dialog avec leur fonction procedure ( modale ou non )dans les fichier executable DLL .voici
MFC & OpenGL [ par jojomillenium ]
Bonjour, J'aimerai faire avec Visual Studio 6 une MFC Dialog-Based (je trouve plus simple pour ajouter des menu et des boite de dialog pour changer en
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|