[BMP]ビットマップ表示 | Assertion Failed!

[BMP]ビットマップ表示

ビットマップを表示する


[作成環境]

・Visual Studi 2008 Standart Edition

・MFC-ダイアログベース


Assertion Failed!

※ 使われている題材はあまり気にしないでください。



簡単のため、全てOnPaint()関数内で処理します。

必要な情報は適当にクラス化などして。


void CSampleDlg::OnPaint()
{
  if (IsIconic())
  {
    ・・・中略

  }
  else
  {
    CDialog::OnPaint();


    // 描画するビットマップをロードし、ハンドル取得

    HBITMAP hbmp = (HBITMAP)LoadImage(0,
                               _T("C:\\sample.bmp"),
                               IMAGE_BITMAP,
                               0,
                               0,
                               LR_LOADFROMFILE);


    // 取得したビットマップハンドルからビットマップオブジェクトを生成

    CBitmap *bmp = bmp->FromHandle(hbmp);


    // デバイスコンテキスト取得

    CDC *pDC = GetDC();

    

    // メモリデバイスコンテキストを作成

    CDC dcMem;
    dcMem.CreateCompatibleDC(pDC);


    // メモリDCにビットマップオブジェクトを割り当てる

    // (元のオブジェクトも保持)

    CBitmap *old = dcMem.SelectObject(bmp);


    // メモリDCからDCへ、ビットマップをコピー

    pDC->BitBlt(0,

             0,

             500,

             500,

             &dcMem,

             0,

             0,

             SRCCOPY);


    // 元のビットマップオブジェクトに戻し、各DC、オブジェクトを破棄

    dcMem.SelectObject(old);

    bmp->DeleteObject();
    old->DeleteObject();
    dcMem.DeleteDC();

    ReleaseDC(pDC);
  }
}