【发布时间】:2013-06-24 08:10:53
【问题描述】:
我正在学习 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();
}
}
【问题讨论】:
-
你在哪里找到
ref new?那是不合法的。您的其余代码是 C++/CLI,而不是标准 C++。 C++/CLI 应该很容易翻译成 C#。 -
@KenKin:不,C++/CLI 使用
gcnew。这是C++/CX吗? -
是的。修复标签。
-
适用于 Windows 应用商店应用的 C++/CX
-
@erotavlas:最好在问题中说明这一点,但现在它已重新标记。
标签: c# windows-runtime directx c++-cx