C3Lab研究室

Back to Title Page(OpenLab)タイトルページへ戻る

最終更新日: 1999年 03月 25日 木曜日

*DDB (Device Dependent Bitmap)を表示する

DDB(デバイス依存BITMAP)データの画面表示などについて

 
 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