[問題] BCB 上等同於 VB addressof 的運算子

看板C_and_CPP作者 (默默的等待)時間12年前 (2013/05/31 03:11), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/1
最近要將程式從VB移轉到BCB上 VB 和 VB.net 上有一個運算子 AddressOf 不知道轉到BCB上後要怎麼寫 找了好久資料還是試不出來 請版上的前輩知道的可以指導我一下 謝謝 -- "VB底下" Rn=EventCallback(No, HIGH, 0, 0, AddressOf MyFunction, 0) //主程式呼叫 .... Public Sub MyFunction(ByVal parm As Long) //自己寫的函式 Count = Count + 1 End Sub Declare Function EventCallback Lib "UNI.dll" ( ByVal No As Integer, ByVal EventType As Integer, ByVal Interrupt As Integer, ByRef hEvent As Long, ByVal CallbackFun As Long, ByVal Parameter As Long) As Integer //這是他.bas檔裡的定義 "BCB底下" Rn=EventCallback(No, HIGH, 0, 0, &MyFunction, 0) //主程式呼叫 void __fastcall TForm1::MyFunction(DWord parm) //自己寫的函式 { Count=Count+1; } EXPORTS WORD CALLBACK EventCallback( WORD No, WORD EventType, WORD Interrupt, HANDLE *hEvent, PVOID CallbackFun, DWORD Parameter); 這是他.h檔裡的定義 執行後出現的錯誤訊息 E2034 Cannot convert 'void (_fastcall * (_closure )(unsigned long))(unsigned long)' to 'void *' E2342 Type mismatch in parameter 'CallbackFun' (wanted 'void *', got 'void (_fastcall * (_closure )(unsigned long))(unsigned long)') 感覺像是型態上定義的問題 有人可以幫幫我嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.208.31 ※ 編輯: jungchun 來自: 211.72.51.216 (05/31 11:48)

05/31 12:03, , 1F
&Button1_Click should work
05/31 12:03, 1F
※ 編輯: jungchun 來自: 211.20.104.148 (05/31 17:13)

05/31 17:14, , 2F
直接加 & 好像不太行 還是我本身變數定義上有錯?
05/31 17:14, 2F

05/31 17:19, , 3F
另外寫一個函式 void Handle(TForm1* f){ f->MyFunction(0);}
05/31 17:19, 3F

05/31 17:19, , 4F
然後 EventCallback(...., &Handle, &form1) 這樣?
05/31 17:19, 4F

05/31 17:22, , 5F
可能要 (void*) &Handle
05/31 17:22, 5F

05/31 17:32, , 6F
過了 ^0^ 謝謝~
05/31 17:32, 6F

05/31 22:24, , 7F
好奇為啥要從VB轉BCB??
05/31 22:24, 7F
文章代碼(AID): #1Hg1Jnjq (C_and_CPP)