線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1203
推到 Plurk!
推到 Facebook!

請問如何在自定的class中自定function pointer變數

尚未結案
mtyen
一般會員


發表:13
回覆:16
積分:5
註冊:2004-02-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-21 12:41:32 IP:60.250.xxx.xxx 訂閱
各位先進:
我自定了一個TMyMenuItem,繼承自TMenuItem,如下
class TMyMenuItem : public TMenuItem
{
public:
void (* Func)();
__fastcall virtual TMyMenuItem(Classes::TComponent* AOwner):TMenuItem(AOwner)
{
}
};
我在Form上有個PopupMenu1, TMyMenuItem *item=new TMyMenuItem(this);
PopupMenu1->Items->Add(item);
item->OnClick = MapForm->MenuClick;
item->Func= Httpfunc; //我自定的function pointer , 在 Http.c

void __fastcall TMapForm::MenuClick(TObject *Sender)
{
TMyMenuItem* item;
item= reinterpret_cast< TMyMenuItem* >(Sender);
(item->Func)(); // call我的 function
}

我的function在另一個.c(Http.c) ,如下
void Httpfunc()
{
MapForm->HTTP1Click(NULL);
}

可執行,為何AP結束時,會產生Access Violation at ....

請各位先進幫幫忙,是哪裡有錯.我如果將下面這行mark掉,就不會有錯.
item->Func= Httpfunc;
但就無法執行我自定的函數
mtyen
一般會員


發表:13
回覆:16
積分:5
註冊:2004-02-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-23 14:28:25 IP:220.130.xxx.xxx 訂閱
不好意思,此問題,我已找到解答. 因為PopupMenu1內,已有TMenuItem,造成引用非TMyMenuItem, 而是TMenuItem.
系統時間:2024-04-20 17:06:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!