我最近又回到了C ++。我已经使用C#远离C ++ / CLI至少一年了,而且我有点生疏了。我正在查看Windows 8的Direct3D应用程序的基本示例,但找不到任何解释
的内容 DX::ThrowIfFailed
一样。根据它所说的,如果DirectX中的某些内容失败,它会执行某些操作,但是从实现看起来它似乎用于初始化东西,作为Direct3D的基础演示:
Platform::String^ text = "Hello, DirectX!";
DX::ThrowIfFailed(
m_dwriteFactory->CreateTextLayout(
message->Data(),
message->Length(),
m_textFormat.Get(),
700, // maxWidth.
1000, // maxHeight.
&m_textLayout
)
);
有人可以向我解释这个功能是如何运作的。我看到它散落在各个例子中,但谷歌搜索量没有减少适当的文档。提前谢谢!
答案 0 :(得分:9)
此函数将失败的HRESULT转换为异常。它的定义如下,在DirectXHelper.h中,它是Direct3D App模板的一部分:
inline void ThrowIfFailed(HRESULT hr)
{
if (FAILED(hr))
{
// Set a breakpoint on this line to catch Win32 API errors.
throw Platform::Exception::CreateException(hr);
}
}
如果您使用的是Visual Studio,则可以右键单击代码中ThrowIfFailed
的任何实例,然后选择"转到定义。"这将打开包含定义的文件并导航到其位置。