【问题标题】:Unable to get 2 sub-windows to pop up simultaneously in Visual Studio 2017无法在 Visual Studio 2017 中同时弹出 2 个子窗口
【发布时间】:2019-10-04 19:38:14
【问题描述】:

在运行我的程序时,我无法同时弹出子窗口。关闭第一个窗口后,我可以弹出一个窗口,然后弹出另一个窗口。这在一个循环中重复。我是 Visual Studio 和 C++ 的新手,因此我们将不胜感激。我正在使用自动生成的 Windows 表单来创建我的空白表单,这些表单位于 Visual Studio 的“CLR”选项卡下。

#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 文件,其中包含弹出窗口的格式和设计。我创建了一个简单的循环来显示这两个表单,但是在我关闭另一个表单后它们会分别弹出。有什么办法让它们同时弹出?

【问题讨论】:

  • 什么是MyForm?你写了吗?如果是,那么您应该知道它为什么会阻塞,直到您关闭窗口
  • 感谢您的回复。 MyForm 是 Visual Studio 中为空白窗体自动生成的文件。我没有写,但我可以编辑它。

标签: c++ visual-studio clr


【解决方案1】:

对话框有两种形式,模态的和非模态的。在继续处理之前必须关闭模式对话框。这使代码变得更简单。使用无模式对话,事情可以在对话中以及其他地方发生。并且有了两个无模式对话框,还有更多的可能性。

您的代码清楚地使用了模式对话框,即使您没有向我们展示您是如何创建这些对话框的。从您描述的行为中可以明显看出这一点。 a.ShowDialog() 等待模式对话框关闭。

请注意,所有对话框都是窗口,但并非所有窗口都是对话框。您可以完全从头开始创建自己的窗口,并实现您想要的任何行为。对话框基本上是操作系统本身提供大部分行为的窗口。 MessageBox 对话框是一个极端情况,您只提供内容,根本没有代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    相关资源
    最近更新 更多