アプリ版:「スタンプのみでお礼する」機能のリリースについて

void CWatawaView::OnCmdHello()
{
CDC*pDC;
pDC = GetDC();
POINT point;
int x,y;
GetCursorPos(&point);
ScreenToClient(&point);
pDC->SetPixel(point);
ReleaseDC(pDC);

>このプログラムだと「ReleaseDC」の後は打ったドットが消えるのですが
消えないままにしておくにはどうすればよいでしょうか?GetDCの後にはReleaseDCを必ずしなくてはならないなら、消えてしまうのでは困るのです。

A 回答 (2件)

GetDCで取得したデバイスコンテキストを使って描画しても一時的なものです


Windowsが再描画しようとした際にその描画情報が失われているので再描画されません

1) 打ちたい点の配列などで記憶しておいて Paintイベントで描画する
2) ビットマップファイルを準備して CreateCompatibleDCなどで作成したデバイスコンテキストで描画し、Paintイベントなどでビットマップから実画面へ転送
などの方法を検討してみましょう
    • good
    • 0

マウスの座標を記憶しておいて、OnPaint()またはOnDraw()のどちらかふさわしい方で再描画する。


とか、
裏画面に描いておいて、OnPaint()まてはOnDraw()でクライアント領域に転送する。
など……
たいていは後者が利用されます。
「裏画面」とかで検索すればあっさり見つかるかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!