Talsinpo 发表于 2013-1-11 21:45:53

C++ 怎么在事件中调用其他事件中的变量?

C++ builder中点击Button3会动态创建一个WebBrowser控件,当关闭创建的窗口,会触发OnClose事件,在事件中销毁自己定义的WebBrowser控件MyWeb2,但是会出现错误:
MainForm.cpp(48): E2451 Undefined symbol 'MyWeb2'
要怎么才能避免上面的问题?//---------------------------------------------------------------------------

void __fastcall TForm1::MyFormOnClose(TObject *Sender, TCloseAction &Action)
{
      delete MyWeb2;
      ShowMessage("就要关闭窗口了");
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button3Click(TObject *Sender)
{
      TForm *MyForm = new TForm(this);
      TCppWebBrowser *MyWeb2 = newTCppWebBrowser(MyForm);
      MyWeb2->HostDockSite = MyForm;
      MyWeb2->Align = alClient;
      MyWeb2->Navigate(WideString("http://play.baidu.com/"));
      MyForm->OnClose = MyFormOnClose;
      MyForm->Show();
}
//---------------------------------------------------------------------------

ele_eye 发表于 2013-1-11 22:00:17

MyWeb2 需要定义为 全局变量,或这个CPP文件中的静态变量 即MyWeb2需要定义在Button3Click外面

Talsinpo 发表于 2013-1-11 22:02:17

ele_eye 发表于 2013-1-11 22:00 static/image/common/back.gif
MyWeb2 需要定义为 全局变量,或这个CPP文件中的静态变量 即MyWeb2需要定义在Button3Click外面 ...

我希望是动态的生成 啊,如果我要是用数组控件的话,定义成全局的话会不会占用很多的内存啊?

Talsinpo 发表于 2013-1-11 22:08:34

ele_eye 发表于 2013-1-11 22:00 static/image/common/back.gif
MyWeb2 需要定义为 全局变量,或这个CPP文件中的静态变量 即MyWeb2需要定义在Button3Click外面 ...

而且如果那样的话动态创建的窗口也得定义成全局的了,我也试过了,还是通不过!
出现错误: MainForm.cpp(45): E2297 'this' can only be used within a member function//---------------------------------------------------------------------------
      TForm *MyForm = new TForm(this);
      TCppWebBrowser *MyWeb2 = newTCppWebBrowser(MyForm);
void __fastcall TForm1::MyFormOnClose(TObject *Sender, TCloseAction &Action)
{
      delete MyWeb2;
      ShowMessage("就要关闭窗口了");
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button3Click(TObject *Sender)
{

      MyWeb2->HostDockSite = MyForm;
      MyWeb2->Align = alClient;
      MyWeb2->Navigate(WideString("http://play.baidu.com/"));
      MyForm->OnClose = MyFormOnClose;
      MyForm->Show();
}
//---------------------------------------------------------------------------

ele_eye 发表于 2013-1-11 22:14:46

你会灵活一点啊
TCppWebBrowser *MyWeb2;
。。。。。。
void XXXXX(void)
{
   MyWeb2 = newTCppWebBrowser(MyForm);

}


void XXXXX(void)
{
   delete MyWeb2;
}

首先说明 我不会C++ 但是不管会不会,都知道需要这样定义变量的


Talsinpo 发表于 2013-1-11 22:21:22

ele_eye 发表于 2013-1-11 22:14 static/image/common/back.gif
你会灵活一点啊
TCppWebBrowser *MyWeb2;
。。。。。。


噢噢, 是这样的啊

jm2011 发表于 2013-1-31 16:02:31

Talsinpo 发表于 2013-1-11 22:02 static/image/common/back.gif
我希望是动态的生成 啊,如果我要是用数组控件的话,定义成全局的话会不会占用很多的内存啊? ...

就一个指针,没有太大的空间;另外,可以使用数组来表示当前的页面上的控件;
还有,最好学学C++,C++的精髓在模式设计上;
页: [1]
查看完整版本: C++ 怎么在事件中调用其他事件中的变量?