c# - 如何将此函数地址从 C++ 写入 C#?

标签 c# windows-runtime directx c++-cx

我正在学习 DirectX,但我不太了解 C++,所以我决定改用 SharpDX。但我在 C++ 中停留在这部分,他们使用 TypedEventHandler 中的函数地址,但我不知道如何在 C# 中编写它?谁能帮忙?

ref class App sealed : public IFrameworkView
{
public:
virtual void Initialize(CoreApplicationView^ AppView)
{
    AppView->Activated += ref new TypedEventHandler
        <CoreApplicationView^, IActivatedEventArgs^>(this, &App::OnActivated);
}
virtual void SetWindow(CoreWindow^ Window) {}
virtual void Load(String^ EntryPoint) {}
virtual void Run() {}
virtual void Uninitialize() {}

void OnActivated(CoreApplicationView^ CoreAppView, IActivatedEventArgs^ Args)
{
    CoreWindow^ Window = CoreWindow::GetForCurrentThread();
    Window->Activate();
}
};

到目前为止我的转化

internal class App : IFrameworkView
{
    public void Initialize(CoreApplicationView AppView)
    {
        // Call OnActivated() when the Activated event is triggered
        AppView.Activated += new TypedEventHandler<CoreApplicationView, IActivatedEventArgs>(this,this.OnActivated);

    }
    public void SetWindow(CoreWindow Window) {}
    public void Load(String EntryPoint) {}
    public void Run() {}
    public void Uninitialize() {}

    public void OnActivated(CoreApplicationView CoreAppView, IActivatedEventArgs Args)
    {
        CoreWindow Window = CoreWindow.GetForCurrentThread();
        Window.Activate();
    }

}

最佳答案

C# 事件连接不需要“this”参数:

public sealed class App : IFrameworkView
{
    public virtual void Initialize(CoreApplicationView AppView)
    {
        AppView.Activated += new TypedEventHandler <CoreApplicationView, IActivatedEventArgs>(OnActivated);
    }

    public virtual void SetWindow(CoreWindow Window)
    {
    }
    public virtual void Load(string EntryPoint)
    {
    }
    public virtual void Run()
    {
    }
    public virtual void Uninitialize()
    {
    }

    public void OnActivated(CoreApplicationView CoreAppView, IActivatedEventArgs Args)
    {
        CoreWindow Window = CoreWindow.GetForCurrentThread();
        Window.Activate();
    }
}

关于c# - 如何将此函数地址从 C++ 写入 C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17332754/

相关文章:

c# - 键值对作为控制台应用程序中的参数

c# - WPF 多边形相交

c++ - 顶点颜色无法正常工作

c++ - Direct3D : trying to draw a triangle but nothing is shown

windows-8 - WinRT/Win8 中的 MediaElement 根本不起作用

c++ - 使用 Sprite 时纹理变形 (Directx 9)

c# - 使用不同的数据库,具有不同的DBcontext,并根据不同的URL请求连接到它

c# - 将子属性(property)反射(reflect)给父属性(property)的最佳方式

c# - 在 Win10 UWP App 中获取屏幕分辨率

.net - 使用 Task.Wait() 代码包装 Async/Await IAsyncOperations 有哪些风险?