首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

小弟我这有段代码,是小弟我抄的,哪位好心的大哥能给小弟我解释一下啊

2012-03-07 
我这有段代码,是我抄的,哪位好心的大哥能给我解释一下啊!为了代码的简洁,我把向导生成的代码给删了。各位好

我这有段代码,是我抄的,哪位好心的大哥能给我解释一下啊!
为了代码的简洁,我把向导生成的代码给删了。
各位好心大哥帮我看看,我已经把不懂的地方注释起来了。
还有有没有介绍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);

热点排行