我最近又回到了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
)
);
有人可以向我解释此功能的工作原理。我看到它分散在各个示例中,但是没有大量的谷歌搜索工作可以缓解适当的文档记录。提前谢谢你!
最佳答案
此函数将故障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
的任何实例上单击鼠标右键,然后选择“转到定义”。这将打开包含定义的文件并导航至其位置。关于c++ - 什么是DX::ThrowIfFailed?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13592255/