• ベストアンサー

GetDC()→ReleaseDC、で打ったものが消える。

void CWatawaView::OnCmdHello() { CDC* pDC; pDC = GetDC(); POINT point; int x,y; GetCursorPos(&point); ScreenToClient(&point); pDC->SetPixel(point); ReleaseDC(pDC); >このプログラムだと「ReleaseDC」の後は打ったドットが消えるのですが 消えないままにしておくにはどうすればよいでしょうか?GetDCの後にはReleaseDCを必ずしなくてはならないなら、消えてしまうのでは困るのです。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

GetDCで取得したデバイスコンテキストを使って描画しても一時的なものです Windowsが再描画しようとした際にその描画情報が失われているので再描画されません 1) 打ちたい点の配列などで記憶しておいて Paintイベントで描画する 2) ビットマップファイルを準備して CreateCompatibleDCなどで作成したデバイスコンテキストで描画し、Paintイベントなどでビットマップから実画面へ転送 などの方法を検討してみましょう

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

マウスの座標を記憶しておいて、OnPaint()またはOnDraw()のどちらかふさわしい方で再描画する。 とか、 裏画面に描いておいて、OnPaint()まてはOnDraw()でクライアント領域に転送する。 など…… たいていは後者が利用されます。 「裏画面」とかで検索すればあっさり見つかるかと思います。