读书人

c++ builder更动主窗体

发布时间: 2012-09-10 11:02:33 作者: rapoo

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;} 

读书人网 >C++

热点推荐