我有一個函數,singleFrameEventHandler,我希望當一個特定的事件,OnNewFrame,發生被調用。之後做一些研究,但在我看來,它處理事件的函數void返回類型,並採取包含事件類型的參數。從我能在網上找到的,就是這樣完成的:事件處理在C++/CLI
函數聲明:
void singleFrameEventHandler(IAFrame^frame);
當該功能被分配到處理該事件:當我試圖編譯
iaframe->OnNewFrame += &singleFrameEventHandler;
代碼包含上述段,我得到以下錯誤:
error C2664: 'Spiricon::BeamGage::Automation::Interfaces::IAFrame::OnNewFrame::add' : cannot convert parameter 1 from 'void (__clrcall *)(Spiricon::BeamGage::Automation::Interfaces::IAFrame ^)' to 'Spiricon::BeamGage::Automation::Interfaces::newFrame ^'
No user-defined-conversion operator available, or
There is no context in which this conversion is possible
OnNewF RAME的類型是Spiricon的:: BeamGage ::自動化::接口:: newFrame的,不幸的是已經超越被描述爲沒有文件「當一個新的幀可用時調用的事件。」
在對象瀏覽器,我可以找到一些關於它的信息:(?)
public delegate newFrame:
public System.IAsyncResult BeginInvoke(System.AsyncCallback callback, System.Object object)
public System.Void EndInvoke(System.IAsyncResult result)
public System.Void Invoke()
public newFrame(System.Object object, System.IntPtr method)
的newFrame的構造似乎是最好的選擇,因爲它似乎採取的方法指針,但是當我嘗試使用這樣的:
iaframe->OnNewFrame += gcnew newFrame(iaframe, &singleFrameEventHandler);
我得到以下錯誤:
error C3352: 'singleFrameEventHandler' : the specified function does not match the delegate type 'void (void)'
這是否由t我的函數必須不帶參數?如果是這樣,我將如何獲得有關該事件的信息?
好的,謝謝。我還發現,當我從工廠獲得IAFrame(其中還包括除事件以外的單個框架的數據)時,我得到最新的框架,因此我不需要事件處理程序來處理IAFrame對象傳遞給它。 – 2010-08-13 15:17:54