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

VC6.0MFCで
クライアント領域(みたまま)を
CBitmapに取り込みたいのですがどうすればよいのでしょうか?
ためしにダイアログの領域をクリップボードに取り込むコード
OnPaint書いたのですが真っ黒の画像しか取り込めていませんでした。
根本的に使うAPIが違うのでしょうか?

void CCaptureDlg::OnPaint()
{
 CPaintDC dc(this); // 描画用のデバイス コンテキスト
 CRect cr;
 GetClientRect(&cr);
 dc.TextOut(0,0,"テスト");
 CDC* pDC = new CDC();
 pDC->CreateCompatibleDC(&dc);
 CBitmap img;
 img.CreateCompatibleBitmap(pDC, cr.Width(), cr.Height());
 OpenClipboard();
 ::EmptyClipboard();
 ::SetClipboardData(CF_BITMAP, img.GetSafeHandle());
 ::CloseClipboard();
 pDC->DeleteDC();
 delete pDC;
 CDialog::OnPaint();
}

A 回答 (1件)

そのソースでは,コピーしてないですね。


BitBlt でコピーすればいいと思います。

OnPaint ではなくて適当なボタンのイベントハンドラで,
CClientDC からコピーしてくるほうがいいと思います。

この回答への補足

GetBitmapBitsはデータの配列を吐き出すほうですね。
勘違いしてました。

補足日時:2003/11/18 12:05
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
CBitmapに格納したいのですが
BitBltで格納できるのでしょうか?

GetBitmapBitsで格納する必要があると聞いたのですが。

お礼日時:2003/11/18 11:52

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