以下EndDraw()函数返回HRESULT错误代码: http://msdn.microsoft.com/en-us/library/windows/desktop/dd371924%28v=vs.85%29.aspx
文档指定:
如果方法成功,则返回S_OK。否则,它将返回HRESULT错误代码,并将tag1和tag2设置为发生错误时处于活动状态的标记。
...然后返回一个表示操作成功的HRESULT ...
我得到的回复值为-2003238911 (0x88990001)
,但未显示在Microsoft的“常见HRESULT值”页面上:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa378137%28v=vs.85%29.aspx
我还在WinError.h
中搜索了错误代码,但也找不到它。如果它返回此代码,必须有办法找出它的含义。
如何解释此错误代码以找出问题所在?
答案 0 :(得分:3)
您使用Google,该十六进制代码的最高结果是:
D2DERR_WRONG_STATE
0x88990001
The object was not in the correct state to process the method.
http://msdn.microsoft.com/en-us/library/windows/desktop/dd370979(v=vs.85).aspx
我不知道有关图形编程或Windows编程的第一件事,但我认为这可以回答您的问题,并结合文档说明标记值将返回给您,指出错误发生的位置。
答案 1 :(得分:0)
最后但并非最不重要..
我得到了同样的错误,直到我意识到我没有先调用ID2D1HwndRenderTarget :: BeginDraw()才能为绘制调用准备渲染目标。
答案 2 :(得分:-1)
(我刚刚创建了一个帐户来对Loul G.的答案进行投票,但我还没有投票权......)
我有同样的问题......
当不按顺序调用BeginDraw()和EndDraw()时,你可以获得HRESULT:0X88990001
追溯回看它们被调用的顺序。
另外,为了帮助防止这种情况,您可以围绕BeginDraw(),EndDraw()调用,如:
bool beginCalled;
int beginCount;//for debugging
int endCount;//for debugging
//initialize variables somewhere...
void begin(){
rendTarget>BeginDraw();
beginCalled = true;
beginCount++;
}
void end(){
if(beginCalled){
rendTarget->EndDraw();
beginCalled = false;
}
endCount++;
}
//print counts as necessary for debugging