最終更新日: 1999年 03月 25日 木曜日
Windows APIではHBITMAPをディスプレイデバイス互換コンテキストに
割り当て、ディスプレイデバイスコンテキストにBitBltすることで画面出力を行います。
サンプルプログラムを以下に掲載しましたので、詳しい動作についてはプログラムをトレース
して下さい。
簡単に動作を説明しますと、まずディスプレイデバイスコンテキスト互換のデバイスコンテキスト
を生成し、ビットマップハンドルもしくはCBitmapクラスを割り当て、BitBlt関数
で出力し、生成した互換デバイスコンテキストを削除しています。
BOOL DrawBitmap(CDC &dc,int x,int y,CBitmap &cbm,DWORD rop = SRCCOPY);
BOOL DrawBitmap(CDC &dc,int x,int y,HBITMAP cbm,DWORD rop = SRCCOPY);
BOOL DrawBitmap(CDC &dc,int x,int y,CBitmap &cbm,DWORD rop)
{
CDC dcMem;
BITMAP bm;
//
cbm.GetObject(sizeof(BITMAP),&bm);
dcMem.CreateCompatibleDC(&dc);
dcMem.SelectObject(cbm);
dc.BitBlt(x,y,bm.bmWidth,bm.bmHeight,&dcMem,0,0,rop);
dcMem.DeleteDC();
return TRUE;
}
BOOL DrawBitmap(CDC &dc,int x,int y,HBITMAP cbm,DWORD rop)
{
CDC dcMem;
BITMAP bm;
//
::GetObject(cbm,sizeof(bm),&bm);
dcMem.CreateCompatibleDC(&dc);
dcMem.SelectObject(cbm);
dc.BitBlt(x,y,bm.bmWidth,bm.bmHeight,&dcMem,0,0,rop);
dcMem.DeleteDC();
return TRUE;
}
Copyright (C) Kitaro 1999