最近我又回到了C++。我已经远离C++/CLI,转而使用C#了,现在至少有一年了,我有点生疏了。我正在查看Windows8的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
)
);有人能给我解释一下这个函数是如何工作的吗?我看到它分散在示例中,但是再多的谷歌搜索也没有缓解适当的文档。提前谢谢你!
发布于 2012-11-28 04:16:35
此函数将失败的HRESULT转换为异常。它是这样定义的,在DirectXHelper.h中,它是Direct3D应用程序模板的一部分:
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实例,然后选择“转到定义”。这将打开包含定义的文件并导航到其位置。
有关此帮助器的详细信息,请参见GitHub
https://stackoverflow.com/questions/13592255
复制相似问题