2013-02-11 78 views
0

以下EndDraw()函數返回一個HRESULT錯誤代碼: http://msdn.microsoft.com/en-us/library/windows/desktop/dd371924%28v=vs.85%29.aspx隱祕HRESULT錯誤

的文檔指定:

如果該方法成功,則返回S_OK。否則,它將返回HRESULT錯誤代碼,並將tag1和tag2設置爲發生錯誤時處於活動狀態的標籤。

...然後返回HRESULT指示操作的成功...

我越來越不上微軟的「共同價值觀HRESULT」頁面出現-2003238911 (0x88990001)返回值: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378137%28v=vs.85%29.aspx

我也在WinError.h中搜索了錯誤代碼,但是在那裏也找不到它。如果它返回這個代碼,就必須有一種方法來找出它的含義。

如何解釋此錯誤代碼以找出問題所在?

+0

http://alax.info/blog/1383讓你''0x88990001'和D2DERR_WRONG_STATE'關於其他'HRESULT'代碼的數千(不開玩笑)的信息。 – 2013-02-11 13:10:09

回答

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程序設計的第一件事情,但我認爲這會回答你的問題,並附上文檔,指出標籤值將返回給你,指的是發生錯誤的地方。

+0

感謝您的鏈接。我知道什麼函數調用失敗,但不知道爲什麼對象沒有處於正確的狀態。錯誤代碼似乎有點模糊! – user974967 2013-02-11 12:22:34

+2

對於Direct2D和Direct3D調試,最好的辦法是啓用「調試設備」,它應該提供額外的上下文和信息。請參閱[Direct2D調試層](http://msdn.microsoft.com/zh-cn/library/windows/desktop/ee794278.aspx)。這裏唯一的技巧是調試層是特定於操作系統版本的。您可以手動下載並安裝Windows 7 RTM的Direct2D調試,或者安裝Windows 8.x SDK以獲取Windows 7 SP1或Windows 8.x.請參閱[Direct3D SDK調試層技巧](http://blogs.msdn。COM/B/chuckw /存檔/ 2012/11/30/Direct3D的SDK-調試層tricks.aspx)。 – 2014-10-21 03:52:29

0

最後但並非最不重要..

我得到了同樣的錯誤,直到我意識到,我沒有打電話ID2D1HwndRenderTarget :: BeginDraw()首先,以準備渲染目標的繪製調用。

-1

(我剛剛創建的帳戶投票通過了將10ul 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