>>755
DIB という単語が多義的に使われていて混乱してる気がするな。

 ほんとに素の DIB だと SetDIBitmsToDevice(), StretchDIBits() で描画することしか出来ない。
 GDI 関数を使いたければ CreateDIBSection() で DIB セクションを作成する必要がある。

ということで OK?

ついでに DDB, DIB, DirectDrawSurface の得失

DDB
 + GDI 関数が使える
 + BitBlt() が高速
 - ピクセル操作は Win32 API 呼び出しが絡むので遅い
  (単に API がどうこうというだけでなく、データをビデオメモリ上に持ってるんじゃない?)

DIB
 - GDI 関数が使えない(ただし CreateDIBSection で補える)
 - BitBlt() はやや遅い
 + ピクセル操作はポインタ経由で行えるので高速
 + ピクセルフォーマットを自分で決められる

DirectDrawSurface
 + GDI 関数が使える (ただしピクセル操作よりは遅くなる)
 + BitBlt() が高速
 + 標準で透過処理などをサポートしている
 + ピクセル操作はポインタ経由で行えるので高速
  (ただしシステムメモリにサーフェイスを作った場合、ビデオメモリに作ると操作は逆に遅くなる)
 - ピクセルフォーマットはデバイス依存になる

というところで。

良くも悪くもシステムが面倒を全部見てくれる DDB, ハードウェアが直接見える DirectDrawSurface,
その中間に位置する DIB という感じ。