c++ builder更改主窗体
c++ builder更改主窗体如何更改主窗体呢? 以下是delphi的代码,不知有人会转为c++ builder的吗?
- Delphi(Pascal) code
{ 修改 Application 的私有变量 FMainForm 的值,将其置空 } procedure ClearMainForm; var pMainForm: Pointer; begin pMainForm := @Application.MainForm; Pointer(pMainForm^) := nil; end; { 主窗体切换 } procedure TForm1.btn1Click(Sender: TObject); begin Form1.Hide; { 隐藏主窗体 } ClearMainForm; { 销毁 Applicaiton 的主窗体 } Application.CreateForm(TForm2, Form2); { 创建 Form2 主窗体 } Form2.Show; { 显示 Form2,这时是主窗体了 } Form1.Destroy; { 销毁 Form1,这时程序并不会退出程序,因为 Form1 已经不是主窗体了。关闭 Form2 就退出程序了,因为这时 Form2 才是主窗体 } end;
[解决办法]
改成C++Builder的代码,基本是这样:
- C/C++ code
void __fastcall ClearMainForm(){ void *p = &(Application->MainForm); *(LONG *)p = 0;}void __fastcall TForm1::Button1Click(TObject *Sender){ Form1->Hide(); ClearMainForm(); Application->CreateForm(__classid(TForm2), &Form2); Form2->Show(); delete Form1;}