2

MFCを学び始めたばかりです。円を描く必要があります。OnPaint() を使用すると動作します。背景に描画するにはどうすればよいですか? これは適切な機能ですか、それとも変更する必要がありますか?

void Cvaja5Dlg::OnRButtonDown(UINT nFlags, CPoint point)
{
    CPaintDC dc(this);
    dc.Ellipse(0,0,500,500);
    CDialogEx::OnRButtonDown(nFlags, point);
}
4

2 に答える 2

6

いいえ、Windows ペインティングは別の方法で動作します。それはかなり非同期です。

  1. CPaintDCWM_PAINT実行BeginPaint()/EndPaint()呼び出し時にハンドラー内でのみ使用されます。
  2. 通常、すべての描画はオーバーライドされたCWnd::OnPaint()/CView::OnDraw()メソッドで実行されます。
  3. ユーザー入力 (マウスの右ボタンを押すなど) で、ハンドラーはクラスの状態を変更します。たとえば、bool フラグを設定し、ウィンドウの非同期再描画を開始するためisRightButtonDownに呼び出します。同期の再描画を強制するには、または無効にした直後にInvalidate()使用できます。UpdateWindow()RedrawWindow()
于 2012-10-29T15:49:55.690 に答える
0

OnRedraw() メソッドを使用して再描画する場合は、その BeginPaint() と endPaint(); で良いです。CPAINTDC を使用して、ペイント ハンドラーの構造体を作成します。

于 2017-08-23T12:52:37.150 に答える