Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ IDWriteFactory::CreateTextFormat()失败_C++_Direct2d_Directwrite - Fatal编程技术网

C++ IDWriteFactory::CreateTextFormat()失败

C++ IDWriteFactory::CreateTextFormat()失败,c++,direct2d,directwrite,C++,Direct2d,Directwrite,我正面临一个问题,我正在为此而拼命。我有以下代码: ComPtr<IDWriteFactory> factory; DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory), factory.GetAddressOf(); ComPtr<IDWriteTextFormat> textFormat; factory->CreateTextFormat(L"Arial", nullp

我正面临一个问题,我正在为此而拼命。我有以下代码:

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());
ComPtr工厂;
DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED,uu uuidof(IDWriteFactory),FACTORY.GetAddressOf();
ComPtr文本格式;
factory->CreateTextFormat(L“Arial”、nullptr、DWRITE\u FONT\u WEIGHT\u NORMAL、,
DWRITE\u FONT\u STYLE\u NORMAL、DWRITE\u FONT\u STRETCH\u NORMAL、20.0f、nullptr、,
textFormat.GetAddressOf());

在最后一行textFormat指向null之后。CreateTextFormat()返回值E_INVALIDARG。我肯定安装了Arial,根据MSDN,两个nullptr参数是允许的,所以我看不出什么是无效的。有人能解释一下吗?

就像CodeAnger所说的,语言标记和familyName不能为null(在_z而不是在_opt_z中)。虽然“”但两者都可以为空,在这种情况下,不会使用特定语言,并且会选择默认的回退字体。

您为本地名称提供的
nullptr
有问题,您尝试过“en-us”吗取而代之的是?textFormat现在似乎不是null,所以它可能已经被修复了。MSDN示例如何使用null作为区域名称似乎有些奇怪……它是否适用于空字符串
L”“
,而不是
nullptr
?这是对声明的评论。它确实有效。谢谢!