MFC 비트맵에 투명 배경을 사용해본다
보통 picture control을 static 필드로 비트맵을 쓰는데 (!?!?)
투명 배경 사용을 위해 CStatic를 상속하는 클래스를 만들어본다
1. MFC클래스 생성-> 이름 넣고-> 생성 한다 (이름 예 : CCTransparentStatic )
2. 클래스 메시지 함수인 OnPaint()를 생성
3. 다음을 입력
void CMyStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
HBITMAP old,bmp = GetBitmap();
BITMAP bminfo;
CDC memDC;
memDC.CreateCompatibleDC(&dc);
old = (HBITMAP)::SelectObject(memDC.m_hDC,bmp);
::GetObject(bmp,sizeof(BITMAP),&bminfo);
::TransparentBlt(dc.m_hDC,0,0,bminfo.bmWidth,bminfo.bmHeight,memDC.m_hDC,0,0,bminfo.bmWidth,bminfo.bmHeight,RGB(255,255,255));
::SelectObject(memDC.m_hDC,old);
memDC.DeleteDC();
// Do not call CStatic::OnPaint() for painting messages
}
* 255.255.255로 함수 변수를 넘겼기 때문에 이미지 중 색이 하얀색(255.255.255)인 것은 투명처리된다
4. 이제 원래의 다이얼로그로 돌아가서 픽쳐컨트롤을 올리고 비트맵을 삽입한다
5. 컨트롤에 멤버변수를 만든다. (안만들어지면 컨트롤 ID를 기본인 IDB_STATIC말고 다른걸로 쓰면 된다)
6. 다이얼로그 헤더파일에 방금 만든 멤버 변수가 CStatic XXX 형태로 되어있는 것을
방금 만든 클래스 타입으로 바꾼다. (ex CTransparentStatic XXX)



