addressof 后面接的函式名,可以帶引數嗎?我直接加括號 然后在括號里寫上引數是錯誤了
謝謝了
uj5u.com熱心網友回復:
AddressOf 運算子一個一元運算子,它將其后面的程序的地址傳遞給一個 API 程序,該 API 程序在引數表對應位置中需要一個函式指標。
語法
AddressOf procedurename
必需的 procedurename 指定要傳遞的地址是哪一個程序的地址。這個程序必須是發出呼叫命令的工程中的一個標準模塊模塊里的一個程序。
說明
當一個程序的名稱出現在一個引數串列中時,通常該程序已經被計算,并且該程序回傳值的地址也會被傳遞。AddressOf 允許該程序的地址被傳遞給元件 (DLL) 中的一個 Windows API 函式,而不是傳遞該程序的回傳值。API 函式然后就可以使用這個地址來呼叫相應的 Basic 程序,這個程序就是我們所知道的回呼。AddressOf 運算子只出現在對 API 程序的呼叫中。
盡管可以使用 AddressOf 運算子在 Basic 程序之間傳遞程序指標,卻不能通過這樣的一個指標從 Basic 內部呼叫一個函式。這就是說,例如,一個使用 Basic 撰寫的類 不能使用這樣的一個指標來回呼自己的控制器。當使用 AddressOf 運算子在 Basic 內的程序之間傳遞一個程序的指標時,被呼叫程序的引數型別必須定義為 As Long。
警告 如果不能完全理解函式回呼的概念,則使用 AddressOf 運算子可能會導致意想不到的結果。必須理解回呼的 Basic 部份是如何作業的,以及接受所傳遞的函式地址的 DLL 的代碼是如何作業的。除錯這樣的互動操作是非常困難的,因為該程式和開發環境運行在相同的行程中。在某些情況下,系統的除錯也許是不可能的。
注意 可以使用 Microsoft Visual C++ (或者類似的工具)編譯的 DLLs 來創建自己的回呼函式原型。要使用 AddressOf 運算子來作業,您的原型必需使用 __stdcall 呼叫約定。預設的呼叫約定 (__cdecl) 不能與 AddressOf 運算子一起作業。
因為一個回呼的呼叫程式不在用戶自己的程式中,所以很重要的一點是要保證回呼程序中的錯誤不被回傳到呼叫者。可以通過把 On Error Resume Next 陳述句放置于回呼程序的起始處來達到這個要求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/145003.html
標籤:VB基礎類
上一篇:問個VB FTP操作的問題
下一篇:不使用webbrowser,如何獲取指定網頁里面的所有超鏈接地址?試過下載原始碼,但是原始碼會有些網址是不完整的
