Problème accès évènements fenêtre enfant

Signaler
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
-
cs_louis14
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
-
Bonjour à tous!
Voila, j'ai un gros problème.
J'ai une appli basée sur des boites de dialogue.

Mon but était d'avoir une fenetre principale, dans laquelle je changerais de sous fenetre (fenetre enfant) selon un choix radio button.

J'ai réussi à le faire, mais par contre, je n'arrive pas à accéder aux méthodes de la classe associé à mes fenêtre enfant.
Par exemple, si je créer l'évènement OnClick sur le bouton OK d'un fenetre enfant, et bien ca fait l'action OnOk() tout seul (et donc ferme la fenetre enfant, ce que je ne veux surtout pas!). Hors, j'ai rajouté du code qui n''est pas exécuter, et pareil, le point d'arrêt ne sert a rien. J'ai fais pareil sur un autre bouton, et même avec un point d'arrêt, ca ne passe pas dedans, et il n'y a aucun action.
Voici le code que j'ai utilisé, si vous pouviez m'aider pour que mes fenetre fille puissent utiliser le code de la classe qui leur est associé, car je ne vois pas quoi faire du coup. Merci

//Fonction permettant de créer les fenêtre fille à un endroit de la principale
CDialog *CSwitchDlgDlg::CreatePage(UINT nPlaceCtrlId,UINT nDialogID,CRuntimeClass *pClass/*=NULL*/)
{
CDialog *pDlg=NULL;
if(pClass) pDlg=reinterpret_cast<CDialog *>(pClass->CreateObject());
else pDlg= new CDialog;

pDlg->Create(nDialogID,this);

ASSERT(IsWindow(pDlg->m_hWnd));

CRect rect;
CWnd *pWnd = GetDlgItem(nPlaceCtrlId);
ASSERT(pWnd != NULL);
ASSERT(IsWindow(pWnd->m_hWnd));
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);
pDlg->SetWindowPos(NULL, rect.left, rect.top, 0, 0,
SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE );
pDlg->EnableWindow(TRUE);

return pDlg;
}
....
//utilisation pour afficher ou non tel ou tel fenetre enfant
// desactive
pDlg->ShowWindow(SW_HIDE);
pDlg->EnableWindow(FALSE);

// active l'autre fenetre
pDlg2->ShowWindow(SW_SHOW);
pDlg2->EnableWindow(TRUE);

5 réponses

Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
7
As-tu essayé de changer le style de tes boites de dialogue (CHILD, CLIP_SIBLING...)? Regarde dans l'aide de create de dialog pour les différents styles.
sinon il faut créer la fonction OnOK et OnCancel de tes boites de dialogues (pour MFC)
louis14
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
1
Ma fenetre est un child en effet.
J'ai deja créer des fonctions dans la boite de dilaogue enfant, mais le problème est que a priori, on ne passe mme pas dedans!!
C'est ca que je ne comprends pas.

Peut-etre existe-t-il des exemples concrets qui marchent?
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
1
Ma fenetre est un child en effet.
J'ai deja créer des fonctions dans la boite de dilaogue enfant, mais le problème est que a priori, on ne passe mme pas dedans!!
C'est ca que je ne comprends pas.

Peut-etre existe-t-il des exemples concrets qui marchent?
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
1
Ma fenetre est un child en effet.
J'ai deja créer des fonctions dans la boite de dilaogue enfant, mais le problème est que a priori, on ne passe mme pas dedans!!
C'est ca que je ne comprends pas.

Peut-etre existe-t-il des exemples concrets qui marchent?
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
7
à cette adresse peut-être en vc++
http://www.codeproject.com/dialog/CRHChildDialog.asp
Sinon il faut faire un traitement special pour envoyer les message à le fenêtre enfant:dasn la fonction PretranslateMessage (voir l'aide)

louis14