首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是DX::ThrowIfFailed?

什么是DX::ThrowIfFailed?
EN

Stack Overflow用户
提问于 2012-11-28 04:13:06
回答 1查看 5.9K关注 0票数 8

最近我又回到了C++。我已经远离C++/CLI,转而使用C#了,现在至少有一年了,我有点生疏了。我正在查看Windows8的Direct3D应用程序的基本示例,但找不到任何解释

代码语言:javascript
复制
 DX::ThrowIfFailed

确实如此。从它所说的,如果DirectX中的某些东西失败了,它将执行一些东西,但从实现上看,它似乎是用于初始化东西,作为Direct3D演示的基础:

代码语言:javascript
复制
    Platform::String^ text = "Hello, DirectX!";

DX::ThrowIfFailed(
    m_dwriteFactory->CreateTextLayout(
        message->Data(),
        message->Length(),
        m_textFormat.Get(),
        700, // maxWidth.
        1000, // maxHeight.
        &m_textLayout
        )
    );

有人能给我解释一下这个函数是如何工作的吗?我看到它分散在示例中,但是再多的谷歌搜索也没有缓解适当的文档。提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-28 04:16:35

此函数将失败的HRESULT转换为异常。它是这样定义的,在DirectXHelper.h中,它是Direct3D应用程序模板的一部分:

代码语言:javascript
复制
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

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13592255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档