Этому диалогу будет сложно связать, как вы упомянули. Do modal обычно предназначен для реализации именно того, что вы испытываете. То есть: диалоговое окно всплывает поверх предыдущего.
Один из способов сделать это - создать модальную последовательность диалогов в классе, которая вызывает первое диалоговое окно, и использовать возвращаемое значение предыдущего диалога, чтобы определить, нужно ли показывать второе диалоговое окно и т. Д.
Например:
// define a bunch of constants, any number would do,
// I would avoid 0 and 1 as they usually mean success/error
// This code can be returned in the EndDialog call in a method of your choice (say button click handler).
const int c_needNextDialog = 101;
dialog1 dlg1;
if( dlg1.DoModal() == c_needNextDialog )
{
dialog2 dlg2;
if( dlg2.DoModal() == c_needNextDialog )
{
... and so forth
}
}
Я уверен, что вы поняли ...
в вашем диалоге вы возвращаетесь вот так (взято непосредственно из msf)
void dialog1::OnSomeAction()
{
// Do something
EndDialog(c_needNextDialog); // This value is returned by DoModal!
// Do something
return; // Dialog closed and DoModal returns only here!
}
Я бы остался в стороне от немодального диалога, у вас возникнет еще одна проблема, например, как управлять потоком диалога и не дать людям нажимать на главное окно вашего приложения позади.