메모리 DC의 비트맵을 픽셀단위로 출력하되 하얀색은 투명하게 처리하는 방법에 대해 질문드립니다.

mydream의 이미지

WM_PAINT 메시지 부분에서 TransparentBitBlt 함수가 투명한 색상을 제대로 처리하지 못해서 픽셀단위로 색상을 대응되는 화면 DC에 출력하려고 다음과 같이 WM_PAINT 부분을 작성했습니다.

		case WM_PAINT:
			{
				PAINTSTRUCT pst;
				HDC hdc=BeginPaint(hwnd, &pst);
				//hdc=BeginPaint(hwnd, &pst);
 
 
 
				HBITMAP backupbitmap;
				HDC memDC=CreateCompatibleDC(hdc);
				BITMAP bitinfo;
 
				for(long x=afterimage.left;x<=afterimage.right;x++) {
					for(long y=afterimage.top;y<=afterimage.bottom;y++) {
						SetPixel(hdc, x, y, 0xffffff);
					}
				}
 
 
				backupbitmap=(HBITMAP)SelectObject(memDC, bricks[brick_type][status]);
				GetObject(bricks[brick_type][status], sizeof(BITMAP), &bitinfo);
 
				COLORREF brick_pixel, display_pixel;
 
				for(int i=0;i<bitinfo.bmHeight;i++) {
					for(int j=0;j<bitinfo.bmWidth;j++) {
						brick_pixel=(COLORREF)GetPixel(memDC, j, i);
						display_pixel=GetPixel(hdc, pos.x*MOVECELL+j, pos.y*MOVECELL+i );	
						if( ((COLORREF)brick_pixel)!=((COLORREF)0xffffff)  ) {//trouble
//여기 if문에서 햐얀색을 출력하지 않고 건너띄도록 했는데 하얀색을 계속 출력합니다.
							SetPixel(hdc, pos.x*MOVECELL+j, pos.y*MOVECELL+i, brick_pixel);			
						}
					}
				}
 
 
 
				SelectObject(memDC, backupbitmap);
				DeleteDC(memDC);
 
 
 
 
				EndPaint(hwnd, &pst);
 
			}
			return 0;

하얀색을 투명하게 처리하기 위해서 아예 비트맵이 출력되지 않도록 조건을 주어 화면 DC에 출력되지 않도록 했는데 하얀색이 출력되어 뒤의 이미지를 가려버립니다. 뒤의 이미지가 가려지면 안되는데요. 조건문에서 왜 필터링이 되지 않나요?