gpt4 book ai didi

c++ - 无法将辅助表单显示为MainForm

转载 作者:行者123 更新时间:2023-12-02 09:55:33 25 4
gpt4 key购买 nike

所以我在C++ Builder中遇到这个问题。我有一个包含两个简单表单的项目,仅此而已。

结果是生成了以下代码:


#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
USEFORM("testUnit1.cpp", Form1);
USEFORM("bluewin.cpp", Form2);
//---------------------------------------------------------------------------
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
try
{
Application->Initialize();
Application->MainFormOnTaskBar = true;
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}

据我了解,第一个创建的表单(Form1)被分配为MainForm,并在执行时显示。这有效,并且仅显示Form1。

现在,我要显示第二个窗体(Form2),仅显示此窗体。我读过颠倒两行:
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);

获得
Application->CreateForm(__classid(TForm2), &Form2);
Application->CreateForm(__classid(TForm1), &Form1);

应该可以解决问题,但事实并非如此。实际上,两种形式都显示。我尝试通过转到项目>选项>表单将MainForm设置为Form2,但是得到了相同的结果。

知道为什么会有这种行为吗?

最佳答案

MainForm是在运行时用TForm实例化的第一个Application->CreateForm()。在项目选项中设置MainForm仅更改代码中CreateForm()调用的顺序。因此,交换 call 是正确的解决方案。

如果在Form2是MainForm时仍在显示Form1,那是因为在设计时将Form1的Visible属性设置为true。将其设置为false。然后,只要您实际准备显示它,就可以调用Form1->Show()Form1->ShowModal()

当在IDE中创建非MainForm TForm并将其添加到项目中时,最初会将其设置为Visible=false

关于c++ - 无法将辅助表单显示为MainForm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60437542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com