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

themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 - 7 avril 2006 à 07:14
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 - 7 avril 2006 à 11:50
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

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
7 avril 2006 à 09:48
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
0
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 2
7 avril 2006 à 10:30
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?
0
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 2
7 avril 2006 à 10:30
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?
0
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 2
7 avril 2006 à 10:30
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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
7 avril 2006 à 11:50
à 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
0
Rejoignez-nous