私は、Win32アプリケーション上で動作するC++の小さな2Dレンダリングライブラリを持っており、Direct2Dを使ってそれを描画しています。私はBeginDraw()を呼び出し、描画の負荷を行ってからDrawText()を呼び出しました。これはもちろんEndDraw()の前です。D2D1 :: RenderTarget :: DrawText()を呼び出すと、WM_PAINTが繰り返し送信されるのはなぜですか?
レンダリング関数の呼び出しを続けることができるように、代わりにWM_PAINT(おそらく待たずに)を送信したために停止します(ウインドウが有効になるまでメッセージを送信し続けますか? t know)
私はその時点で描画しているかどうか試してみましたが、その場合はメッセージを正しく処理したようですが(手動で実際にクライアント領域を検証する必要はありませんが)それを送信し、DrawText()は返されません。
これは正常な動作ですか、それについてどう対処しますか?
(私もビジュアルスタジオコミュニティ2013を使用しています)
ウィンドウをペイントまたは検証するまで、WM_PAINTは引き続き保持されます。気にしない場合(GDIを使用していないため)、BeginPaintとそれに続くEndPaintを呼び出してください。 –
ありがとうRaymond。 DrawLineやDrawRectのような関数を使用しているときに、ID2D1 :: RenderTargetのDrawText内になぜそれが送信されないのか理解できません。何か案は? –
あなたが描いていることは、私には奇妙に聞こえます。私は、私は単純にValidateRect(hwnd、NULL)で検証し、正常に動作するEndDraw()の後に、私はDrawPrintのハンドラでDrawTextLayout()を行うテストアプリケーションを自分で持っています。多分あなたのコードのいくつかを表示できますか?それはおそらくHwndRenderTargetでしょうか?どのWindows版ですか? – bunglehead