Невозможно получить 2 вложенных окна одновременно в Visual Studio 2017 - PullRequest
0 голосов
/ 17 мая 2019

Я не могу попасть в подокна для одновременного всплывающего окна при запуске моей программы. Я могу получить одно окно для всплывающего окна, а затем другое окно для всплывающего окна после закрытия первого окна. Это повторяется в цикле. Я новичок в Visual Studio и C ++, поэтому любая помощь будет оценена. Я использую автоматически сгенерированные формы окон для создания своих бланков, которые находятся на вкладке «CLR» Visual Studio.

#include "MyForm.h"
#include "MyFormNoFrame.h"
#include <iostream>

using namespace std;
using namespace windowsproject;

[STAThreadAttribute]
int main() {
MyForm a;
MyFormNoFrame b;
while (1 == 1) {
    b.ShowDialog();
    a.ShowDialog();
}
return 0;
}

MyForm и MyFormNoFrame - это два файла .h, которые содержат форматирование и дизайн всплывающих окон. Я создал простой цикл, чтобы показать обе формы, но они всплывают отдельно после того, как я закрою друг друга. Есть ли способ заставить их всплывать одновременно?

1 Ответ

0 голосов
/ 17 мая 2019

Диалоги бывают двух видов: модальные и немодальные.Модальное диалоговое окно должно быть закрыто перед продолжением обработки.Это делает код намного проще.С немодальным диалогом вещи могут происходить как в диалоге, так и в других местах.А с двумя немодальными диалоговыми окнами есть еще больше возможностей.

Ваш код явно использует модальные диалоговые окна, даже если вы не показываете нам, как вы создаете эти диалоги.Это очевидно из поведения, которое вы описываете.a.ShowDialog() ожидает закрытия модального диалога.

Обратите внимание, что все диалоги являются окнами, но не все окна являются диалогами.Вы можете создать свое собственное окно полностью с нуля и реализовать любое поведение, какое захотите.Диалоги - это, в основном, окна, где сама ОС обеспечивает большую часть поведения.Диалог MessageBox - это крайний случай, когда вы просто предоставляете контент, а не код вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...