2

私はMFCアプリケーションをプログラミングしています。[フォーム]ダイアログでCStatic派生コントロールを作成したので、プログラムの起動時にフォームが直接表示されます。現在、派生クラスのOnPaint()メソッドを使用してこのコントロールを描画しています。これまでのところ、すべてが機能します。ただし、奇妙なことに、図面はコントロールの外にクリップされていません。代わりに、私が本当に大きなものを描くと、フォーム全体がペイントされます。私の理解では、コントロールのみをペイントする必要があります。

よろしくお願いしますAndreasD.

4

2 に答える 2

2

@dlb今それを手に入れました。

CDC* pDC = GetDC();
CRect rClient();
GetClientRect(rClient);
CRgn ClipRgn;
if (ClipRgn.CreateRectRgnIndirect(&rClient))
{
    pDC->SelectClipRgn(&ClipRgn);
}


// Drawing content


pDC->SelectClipRgn(NULL);
ReleaseDC(pDC);

ご回答有難うございます

于 2012-07-06T13:49:20.543 に答える
1

コントロールが[クリップされていないデバイスコンテキスト]オプションを使用しているかどうかを確認します。これは、制御フラグを取得することで確認できます。IsOptimizedDraw()を呼び出すこともできます。これがtrueを返す場合、描画はコントロールの外に描画できます。

于 2012-07-05T20:21:42.840 に答える