2009-08-21 9 views
0

J'ai fait une application MFC très simple qui appelle un dialogue lorsque je clique sur un bouton, et envoie un MessageBox après 5 secondes. Le problème est lorsque j'étais dans la deuxième boîte de dialogue et que je rejette le MessageBox du parent (pas cliquez sur le bouton OK de MessageBox.Je clique dans une partie vide de la deuxième boîte de dialogue) Je ne peux pas fermer ce dialogue (Le second boîte de dialogue) lorsque je clique sur le bouton OK ou CANCEL.Boîte de dialogue non fermée sur Windows Mobile

Pourquoi?

partie du Code:

 
Main Dlg: 
BOOL Cmult_rc_testDlg::OnInitDialog() 
{ 
    CDialog::OnInitDialog(); 

    // Set the icon for this dialog. The framework does this automatically 
    // when the application's main window is not a dialog 
    SetIcon(m_hIcon, TRUE);   // Set big icon 
    SetIcon(m_hIcon, FALSE);  // Set small icon 

    SetTimer(1, 5000, NULL); 

    return TRUE; // return TRUE unless you set the focus to a control 
} 

void Cmult_rc_testDlg::OnBnClickedButton1() 
{ 
    CDlg1 a; 
    a.DoModal(); 
} 

void Cmult_rc_testDlg::OnTimer(UINT_PTR nIDEvent) 
{ 
    KillTimer(nIDEvent); 
    MessageBox(L"oi"); 

    CDialog::OnTimer(nIDEvent); 
} 

Le deuxième dialogue est le code par défaut généré par l'assistant MFC.

Répondre

0

Je ne suis pas certain de comprendre entièrement votre question. . . il semble que vous essayez de fermer la fenêtre parent lorsque la boîte de message est toujours affichée?

Si c'est le cas, la fenêtre parente possède la boîte de message et n'est pas autorisée à acquérir le focus tant que la boîte de message n'est pas fermée. Vous pouvez essayer d'utiliser

::MessageBox(NULL, L"oi", L"MessageBox", MB_OK); 

au lieu de MessageBox, qui va créer une boîte de message qui vous permet de vous concentrer en arrière sur la fenêtre d'origine encore (Le :: signifie utiliser la version globale de l'espace de noms MessageBox, qui est Windows appel natif par opposition à MFC).

Questions connexes