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の「CommonHRESULTvalues」ページに表示されない 戻り値を取得しています:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa378137%28v=vs.85%29 .aspx

でエラーコードも検索しましたWinError.hが、見つかりません。このコードが返される場合は、それが何を意味するのかを知る方法が必要です。

このエラーコードを解釈して、何がうまくいかなかったのかを知るにはどうすればよいですか?

4

3 に答える 3

3

Google を使用すると、その 16 進コードの上位の結果は次のようになります。

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 に答える