WindowsAPI(Win32API) Advent Calendar 2015 1日目
WindowsAPI(Win32API) Advent Calendar 2015 - Adventar
CreateDIBSectionは、DIBセクションを作成するWindowsAPI・・・。
CreateDIBSection 関数
DIBSectionを作る【Windowsプログラミング研究所】
DIBセクションは、DDBとDIBの両方の機能を持ったもので、ビットマップハンドルでDDBとしてアクセスすることもできるし、ピクセルデータ列を更新することでDIBとしても扱える・・・。
ピクセルデータ列のメモリを別途確保する必要は無く、この関数を呼ぶとピクセルデータ列を自動確保し、そこのアドレスが取得できる・・・。
ただし、そのアドレスを手動で解放してはいけないので注意・・・。
lpBitsPixelという空のポインタのアドレスを(void **)で渡すと、そこにピクセルデータ列のアドレスが入るのでDIBとしてアクセスできる・・・。
そして、戻り値hDIBSectionにハンドルも入るのでDDBとしても使える・・・。
前後を見ても、ピクセルデータ列用のメモリを確保していないのがわかるだろう・・・。
描画する時は、hDIBSectionをBitBltに渡してDDBとして使う・・・。
保存するときは、lpBitsPixelをWriteFileに渡してDIBとして使っている・・・。
lpBitsPixelはシステムによって勝手に解放されるので、deleteなどで解放してはいけない・・・。
DIBとして保存したtest2.bmp・・・。
Sample/CreateDIBSection.cpp at master · bg1bgst333/Sample · GitHub