IDWriteFactory::CreateTextFormat() failing

IDWriteFactory::CreateTextFormat() failing

本文关键字:failing CreateTextFormat IDWriteFactory      更新时间:2023-10-16

我正面临一个问题,我正在为之自杀。我有以下代码:

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,根据MSDN,两个nullptr参数是允许的,所以我不认为什么是无效的。有人能解释一下吗?

正如CodeAngry所说,语言标记和familyName不能为null(In_z而不是In_opt_z)。其中一个可以是空的,尽管是",在这种情况下,不使用特定的语言,而是选择默认的回退字体。