0
私は、Win32 APIの上に実装されたC++(MFCなし)で書かれた社内APIを持っています。私のアプリはWM_PAINT呼び出しごとにウィンドウ全体を描画しています。私はダーティ/インヴァール領域だけを見つけることができる方法があるので、ダーティ領域と交差するビューで描画するように描画関数を最適化できます。WindowProcがWM_PAINTメッセージを受信したときにウィンドウの汚れた領域を見つける方法...?
私はBeginPaint - EndPaint文の間で次のコードを試してみましたが、ひどく失敗しました。全体の窓は黒だった。最適化フラグを0に設定すると、ウィンドウはきれいに描画されますが、描画が遅すぎます。助言がありますか...??。
#if Optimize
// get the inval region and pass it down
HRGN invalRegion = CreateRectRgn(0,0,0,0);
int retVal = ::GetClipRgn(myHDC,invalRegion);
Assert (retVal != -1);
if(retVal == 0)
return; // nothing to draw.
else if(retVal == 1)
Draw(invalRegion); // a valid dirty region handle.
else
#endif
Draw(NULL); // this results in drawing calls to all views in the window.