Я закодировал приложение на основе MFC CDialog
. В нормальных условиях он запускается, отображая CDialog
окно из InitInstance
обработчика как таковые:Как перенести мое вторичное диалоговое окно вверху при запуске приложения на основе CDialog?
CMyDialog dlg;
INT_PTR nResponse = dlg.DoModal();
Но в первый раз это приложение работает, мне нужно, чтобы отобразить другой диалог изнутри CMyDialog::OnInitDialog
до основного диалогового окна на экране , Так что я сделать подобную вещь:
CIntroDialog idlg(this);
idlg.DoModal();
Но проблема с этим подходом является то, что мой второй CIntroDialog
не отображается на переднем плане. Таким образом, я попытался исправить это, вызывая следующие внутри CIntroDialog::OnInitDialog
:
this->SetForegroundWindow();
this->BringWindowToTop();
, но это ничего не делать.
Я тогда попытался позвонить ::AllowSetForegroundWindow(ASFW_ANY);
из InitInstance
для приложения, и это тоже ничего не делало.
Любая идея, как принести это второе диалоговое окно на передний план при запуске приложения?
PS. Из-за структуры этого приложения мне нужно позвонить CIntroDialog::DoModal
с CMyDialog::OnInitDialog
, чтобы предотвратить обширный переписывание.
Не уверен, но вызов 'CIntroDialog :: DoModal' из функции OnInitDialog может быть плохой идеей. –
Удивительно, небольшой тест здесь делает, что отлично работает. Я бы попытался увидеть, если код комментирования в любом из них или в обоих случаях «OnInitDialog's» имеет эффект. Если вы не поправитесь, вы можете установить таймер в 'CMyDialog :: OnInitDialog', чтобы уйти через полсекунды или что-то еще, а в обработчике таймера вызывается' CIntroDialog'. – acraig5075
Вам требуется какое-либо взаимодействие с пользователем в диалоговом окне Intro или просто для отображения информации? – rrirower