【发布时间】:2014-10-27 18:39:44
【问题描述】:
我正在尝试编写一个使用 C++ DLL 的基于 C# 的 WPF 应用程序。 C# 应用程序用于用户界面,它具有 WPF 的所有优点。 C++ DLL 使用 Win32 函数(例如枚举窗口)。
现在我希望 C++ DLL 引发可以在 C# 应用程序中处理的事件。这是我尝试过的(基于this article):
//cpp file
#using <System.dll>
using namespace System;
struct WIN {
HWND Handle;
char ClassName;
char Title;
};
delegate void wDel(WIN);
event wDel^ wE;
void GotWindow(WIN Window) {
wE(Window);
}
当我尝试编译这段代码时,会抛出这些错误:
C3708: 'wDel': 不当使用 'event';必须是兼容事件源的成员
C2059:语法错误:“事件”
C3861:“wE”:未找到标识符
【问题讨论】:
-
event 关键字必须出现在
public ref class中。此外,您必须使用托管value struct而不是本机struct以允许 C# 代码访问结构成员。
标签: c# events c++-cli eventhandler