2015-02-08 12 views
0

У меня возникла проблема, с которой я себя убиваю. У меня есть следующий код:IDWriteFactory :: CreateTextFormat() не удалось

ComPtr<IDWriteFactory> factory; 
DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory), factory.GetAddressOf(); 
ComPtr<IDWriteTextFormat> textFormat; 
factory->CreateTextFormat(L"Arial", nullptr, DWRITE_FONT_WEIGHT_NORMAL, 
    DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, 20.0f, nullptr, 
    textFormat.GetAddressOf()); 

После последней строки textFormat указывает на null. CreateTextFormat() возвращает значение E_INVALIDARG. У меня определенно установлен Arial, два параметра nullptr разрешены в соответствии с MSDN, поэтому я не вижу, что может быть недействительным. Может кто-нибудь пролить некоторый свет на это?

+0

Ваш запрос «nullptr» для локального имени сомнительный, вы попробовали «en-us» вместо этого? –

+0

textFormat теперь кажется чем-то иным, чем null, поэтому он, вероятно, исправлен. Кажется странным, как пример MSDN использует null для имени локали ... –

+1

Работает ли она с пустой строкой 'L '" ', а не' nullptr'? Комментарий к этой странице (https://msdn.microsoft.com/en-us/library/windows/desktop/dd368203.aspx) утверждает это. – CodeAngry

ответ

0

Как и CodeAngry, тег language и familyName не могут быть нулевыми (In_z, а не In_opt_z). Либо может быть пустым, хотя «», и в этом случае не используется какой-либо конкретный язык, и выбраны стандартные резервные шрифты по умолчанию.

 Смежные вопросы

  • Нет связанных вопросов^_^