0

派生したCStaticコントロールのOnPaint()メソッドは、私が知る限り、コントロールよりも大きい図面の部分を切り取ることになっています。ただし、これは行いません。

void CGraph::OnPaint ()
{
   CPaintDC dc(this);
   dc.SetViewportOrg (0, 400);
   dc.SetMapMode(MM_ISOTROPIC);
   dc.SetWindowExt(1000, 800);
   dc.SetViewportExt(1000, -800);

   // MessageBox(L"OnPaint");
   ProcessData ();
   DrawCoordinateSystem (&dc);
   DrawGrid (&dc);
   DrawGraph (&dc);
}
4

2 に答える 2

0

メソッドの定義によって異なります。

OnPaintは実際にはメソッドではありません。これは、メッセージマップ配列にマッピングすることによってWM_PAINTメッセージを処理するために使用される静的メンバー関数です。

C ++の場合、わかりやすくするために、個人的にはメンバー関数と呼ぶことを好みます。

ON_MESSAGEマクロを使用して独自のハンドラーを作成し、必要に応じて呼び出すことができます。コードスニペットは、描画(ペイント)用のコードを表示しないため、あまりわかりません。実際に苦痛を与えるコードを含める必要があります。

問題を示すプロジェクトを添付できれば最高です。

ウィンドウよりも大きいサイズの単純なビットマップをペイントしようとしましたか?

于 2012-07-05T20:13:31.517 に答える
0

@JohnCz了解しました。

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