2010-03-06 3 views
1

Je suis en train de créer un assistant comme structure à l'aide des boîtes de dialogue ... Je remplace le code CDialog1App comme ci-dessousImpossible d'afficher une boîte de dialogue dans sa classe à l'aide de SW_SHOW dans MFC?

CDialog1Dlg* dlg = new CDialog1Dlg; 
m_pMainWnd = dlg; 
dlg->Create(IDD_DIALOG1); 
dlg->ShowWindow(SW_SHOW); 

l'amende a travaillé au-dessus ... sa displying la boîte de dialogue box.but J'ai ajouté une autre boîte de dialogue ... Ainsi, dans la première boîte de dialogue si l'utilisateur clique Ensuite, il doit cacher la première boîte de dialogue et afficher la seconde boîte de dialogue ..

// CDialog1 classe

void CDialog1Dlg::OnBnClickedNext() 
{ 
    // TODO: Add your control notification handler code here 
    CDialog2* dialog2 = new CDialog2(); 
    dialog2->Create(IDD_DIALOG2); 
    dialog2->ShowWindow(SW_SHOW); 
    this->ShowWindow(SW_HIDE); 
} 

dans la ci-dessus un code m créer un objet pour la classe Dialog2 et en essayant de montrer que .... Maintenant, le problème est, quand je clique à côté de son caché à la fois les fenêtres .. Que puis-je faire .. J'ai essayé plusieurs types, mais c'est toujours pas son travail ..Veuillez ne pas me suggérer de faire avec PropertySheet..Cela fonctionnera avec cela, je sais ... mais je veux utiliser cette boîte de dialogue pour une raison quelconque

Répondre

2

Vous créez le dialogue2 avec la fenêtre parent par défaut (NULL):

dialog2->Create(IDD_DIALOG2); 

Mais le parent par défaut semble être dialog1 dans votre cas. Et comme vous masquez dialog1, qui est le parent de dialog2, dialog2 est également caché.

Trouver la fenêtre (CWnd) soit votre boîte de dialogue principale de l'application (si vous avez un visible en dehors de votre assistant), ou utilisez la fenêtre du bureau en tant que parent.

Par exemple:

dialog2->Create(IDD_DIALOG2, GetDesktopWindow()); 
+0

vérifier ma modifier ... Je l'ai changé .. il – kiddo

+0

vérifier mon ... modifier – Stefan