0

以下 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但在那里也找不到。如果它返回此代码,则必须有一种方法可以找出它的含义。

如何解释此错误代码以找出问题所在?

4

3 回答 3

3

您使用谷歌,该十六进制代码的最高结果是:

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 编程的第一件事,但我认为这回答了你的问题,结合文档说明标签值将返回给你,指的是发生错误的点。

于 2013-02-11T12:09:36.367 回答
0

最后但并非最不重要的..

我得到了同样的错误,直到我意识到我没有首先调用 ID2D1HwndRenderTarget::BeginDraw() 以便为绘制调用准备渲染目标。

于 2013-06-17T19:00:57.087 回答
0

(我刚刚创建了一个帐户来投票赞成 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
于 2014-10-20T17:22:09.713 回答