【问题标题】:Open two forms at startup in c++ builder在 c++ builder 中启动时打开两个表单
【发布时间】:2014-03-26 21:17:50
【问题描述】:

我想在运行我的程序时打开两个不同的表单。窗体被命名为 Form2 和 Form3。 Form2 运行正常,但 Form3 没有。我已将Application->CreateForm(__classid(TForm3), &Form3); 放在我的项目cpp 文件中,并将Form3->Show(); 放在我的Unit2.cpp 文件中,但出现错误:"Access violation at address 0047B2CE in module 'Project2.exe'. Read of address 00000384." 我做错了什么?

【问题讨论】:

  • C++ builder 是一个相当古老的编译器,自 2000 年代初以来就没有开发/支持。我怀疑它是否符合 C++98 标准。
  • 我使用的是 RAD Studio 2010,所以我认为它仍然受到支持。
  • @Manu343726:C++Builder 仍在积极开发中。当前版本是C++Builder XE5,XE6 将于今年晚些时候发布。您可能在想 C++Builder 确实在 C++Builder 6 之后停止使用的时候(支持后来被放弃的 C++BuilderX),并且不知道它被复活了几次多年后在 C++Builder 2006 中,并且从那以后一直存在,或者它现在归 Embarcadero 所有,不再归 Borland 所有。
  • @Manu343726:C++Builder 确实支持 C++98,实际上它的 64 位编译器也支持 C++11(它的 32 位编译器还不支持 C++11,但是正在开发中)。

标签: c++ forms c++builder


【解决方案1】:

如果没有看到您的实际代码,很难说,但是当您调用Form3->Show() 时,Form3 很可能还没有创建。您在接近 0 的内存地址处遇到错误,这很好地表明您可能正在访问 NULL 指针。

您无需调用Show(),除非您想更好地控制何时显示表单。您可以在设计时简单地将其Visible 属性设置为true,并在调用Application->Run() 以启动消息循环时让VCL 为您显示它们。

【讨论】:

  • 是的,就像你说的那样,我没有注意到 from 不可见。
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 2013-08-14
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多