我这有段代码,是我抄的,哪位好心的大哥能给我解释一下啊!
为了代码的简洁,我把向导生成的代码给删了。
各位好心大哥帮我看看,我已经把不懂的地方注释起来了。
还有有没有介绍ActiveX的文章啊!我baidu了很长时间,也没发现有什么好文章。汗!看来我们以后只能“有问题,csdn一下”。呵呵
class TS23A : public TActiveForm
{
__published:// IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private:// User declarations
public:// User declarations
__fastcall TS23A(HWND ParentWindow);
__fastcall TS23A(TComponent* AOwner): TActiveForm(AOwner) {};
void __fastcall (__closure *Test)(TObject *Sender);
};
class ATL_NO_VTABLE TS23AImpl:
VCLCONTROL_IMPL(TS23AImpl, S23A, TS23A, IS23A, DIID_IS23AEvents),public IPersistPropertyBagImpl <TS23AImpl>
{
..............
void __fastcall TestEvent(TObject *Sender);
public:
void InitializeControl()
{
.................
m_VclCtl-> Test=TestEvent;
}
void __fastcall TS23AImpl::TestEvent(TObject *Sender)
{
Fire_TestEvent(); //在这边触发事件,然后程序会往那边走呢。我把这个删掉,也是可以运行的。那问题Test(this); 是有什么用啊!
ShowMessage( "CardTakenEvent ");
}
void __fastcall TS23A::Button1Click(TObject *Sender)
{
Test(this); //这个是怎么样子调用的事件的,
ShowMessage( "Button1Click ");
}
[解决办法]
Fire_TestEvent(); //在这边触发事件,然后程序会往那边走呢。我把这个删掉,也是可以运行的。那问题Test(this); 是有什么用啊!
往那边走?当然是执行这个函数,完成以后继续执行下面的函数了。。。
Test(this); //this是表示自身的指针。至于Test函数需要自身的指针做什么。那你就得把Test的代码 再贴出来看看了。。
p.s.希望有所帮助的话,可以结贴。
[解决办法]
void __fastcall (__closure *Test)(TObject *Sender);//定义一个函数指针,也就是事件
m_VclCtl-> Test=TestEvent;//设指向对象
Test(this);//调用指向的对象,最好用(*Test)(this);