Что такое DX:: ThrowIfFailed?
в последнее время я возвращаюсь в C++. Я был вдали от C++/CLI, используя C# вместо этого, по крайней мере, год, и я немного ржавый. Я смотрю на базовый пример для приложения Direct3D для Windows 8 и не могу найти ничего, что объясняет, что
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
)
);
может кто-нибудь объяснить мне, как эта функция работает. Я вижу, что это scattared accross примеры, но никакое количество googling не облегчило надлежащую документацию. Спасибо заранее!
1 ответов
эта функция переводит HRESULTs сбоя в исключения. Это определено так, в 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
в коде и выберите " Перейти к определению."Это откроет файл, который содержит определение и перейдите к его местоположению.