Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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++ 调用Gdiplus::PrivateFontCollection.AddMemoryFont时发生访问冲突错误_C++_Mfc_Gdi+_Privatefontcollection - Fatal编程技术网

C++ 调用Gdiplus::PrivateFontCollection.AddMemoryFont时发生访问冲突错误

C++ 调用Gdiplus::PrivateFontCollection.AddMemoryFont时发生访问冲突错误,c++,mfc,gdi+,privatefontcollection,C++,Mfc,Gdi+,Privatefontcollection,在本演练之后,将演示如何在不必在C++中安装字体的情况下使用字体:我在ntdll.dll中遇到地址冲突错误(0xc0000005) DialogEx::OnInitDialog()继承函数中的调用代码如下: Gdiplus::PrivateFontCollection m_fontcollection; HINSTANCE instance = AfxGetResourceHandle(); HRSRC res = FindResource(instance, MAKEINTRESOURCE(I

在本演练之后,将演示如何在不必在C++中安装字体的情况下使用字体:我在ntdll.dll中遇到地址冲突错误(0xc0000005)

DialogEx::OnInitDialog()继承函数中的调用代码如下:

Gdiplus::PrivateFontCollection m_fontcollection;
HINSTANCE instance = AfxGetResourceHandle();
HRSRC res = FindResource(instance, MAKEINTRESOURCE(IDR_MAIN_FONT), L"BINARY");

HGLOBAL mem = LoadResource(instance, res);
void *data = LockResource(mem);
size_t len = SizeofResource(instance, res);

Gdiplus::Status Result = m_fontcollection.AddMemoryFont(data, len); // Exception arises
我调试了电话,一切看起来都很好。长度匹配并且没有空指针

异常发生在
gdiplusfontcollection.h

inline Status
PrivateFontCollection::AddMemoryFont(IN const void* memory,
                                     IN INT length)
{
    return SetStatus(DllExports::GdipPrivateAddMemoryFont(
        nativeFontCollection,
        memory,
        length));
}
这是无法进一步调试的


你知道如何找出函数调用中的错误吗?

似乎是
nativeFontCollection
为空。不要忘记在之后调用
gdiplussutdown

似乎是
nativeFontCollection
为空。别忘了在之后调用
gdiplussutdown

据我所知,微软的文档将此功能设置为“未实现”。你有不同的信息吗?看起来你必须使用C++ APIDO你必须使用GDI+?或者,您可以只使用“普通”GDI接口,在诸如
CDC::TextOut(…)
等“普通”调用中加载/使用字体(从资源中)?如果是后者,我可以给你一些示例代码来加载和使用资源文件中的字体。你有不同的信息吗?看起来你必须使用C++ APIDO你必须使用GDI+?或者,您可以只使用“普通”GDI接口,在诸如
CDC::TextOut(…)
等“普通”调用中加载/使用字体(从资源中)?如果是后者,我可以给你一些示例代码来加载和使用资源文件中的字体。不确定为什么会被否决,但这为我解决了问题:),所以+1不确定为什么会被否决,但这为我解决了问题:),所以+1