1

MFC アプリケーションでは、スクロール バーが交わる小さな四角形の領域があります (ウィンドウの右下)。この領域は、フレームのサイズが変更されたときにのみ無効になるようです。他の場合 (たとえば、別のウィンドウがその上にドラッグされた場合)、この領域は再描画されません。

新しく作成したプロジェクトで、VS 6 と 2008 で再現できました。同じ問題を抱えた商用アプリもいくつか見ました。再作成するには:

  1. CScrollView 派生ビューで新しい SDI プロジェクトを作成します。
  2. 両方のスクロール バーが表示されるように、ウィンドウのサイズを変更します。
  3. その長方形の上に別のウィンドウをドラッグして、再描画の問題を確認します。

これを取り除く方法はありますか?

4

1 に答える 1

1

回避策の1つは、 CScrollViewのOnPaintメソッドをトラップし、このメソッドにコードを追加して、常にクライアントウィンドウの下隅をペイントすることです。

ただし、このペイントコードは、新しいCDCを取得するためにGetDCを呼び出す必要もあります。これにより、WM_PAINTメッセージによって渡されたBeginPaintCDCのクリッピング領域をバイパスできます。

于 2008-10-13T04:22:45.083 に答える