[WinAPI] GetBitmapBits, SetBitmapBits 사용 예제

[WinAPI] GetBitmapBits, SetBitmapBits 사용 예제

오늘은 GetBitmapBitsSetBitmapBits을 알아보겠습니다.

Bitmap에 실제 데이터를 읽어오고 데이터로 Bitmap을 설정하는 함수 입니다.

HBITMAP에 대해 잘 모르시는 분들은 HBITMAP에 대한 개념을 익히시고 생성하는 법까지 알고 보시는 것을 추천합니다.

1. GetBitmapBits
/* 받은 바이트 수 */
LONG GetBitmapBits(
  HBITMAP hbit, /* 비트맵 핸들 */
  LONG    cb, /* 바이트 수 */
  LPVOID  lpvBits /* 반환 받을 버퍼 */
);

GetBitmapBits 함수가 성공하면 리턴 값은 버퍼에 복사 된 바이트 수입니다.  GetBitmapBits 함수가 실패하면 리턴 값은 0입니다.

2. SetBitmapBits
/* 설정에 사용 된 바이트 수 */
LONG SetBitmapBits(
  HBITMAP    hbm, /* 비트맵 핸들 */
  DWORD      cb, /* 바이트 수 */
  const VOID *pvBits /* 비트맵 데이터 버퍼 */
);

SetBitmapBits 함수가 성공하면 리턴 값은 비트 맵 비트 설정에 사용 된 바이트 수입니다. SetBitmapBits 함수가 실패하면 리턴 값은 0입니다.

3. 사용 예제
COLORREF *pGetBuff = new COLORREF[iWidth * iHeight];
// 복사 된 바이트 수 = ::GetBitmapBits( 받아올 BITMAP 핸들, 가로 * 세로 * 1픽셀 크기, 받을 데이터 버퍼 );
LONG lGetLen = ::GetBitmapBits( hbmpGet, iWidth * iHeight * sizeof(COLORREF), pGetBuff );

COLORREF *pSetBuff = new COLORREF[iWidth * iHeight];
// 설정에 사용 된 바이트 수 = ::SetBitmapBits( 설정할 BITMAP 핸들, 가로 * 세로 * 1픽셀 크기, 설정할 데이터 버퍼 );
LONG lSetLen = ::SetBitmapBits( hbmpSet, iWidth * iHeight * sizeof(COLORREF), pSetBuff );