void DrawBitmapButton(
		HWND hBtn,
		HDC hDC,
		HBITMAP hParentBgBmp,
		HBITMAP hBmp,
		COLORREF crTransparent
	)
{
	RECT rcBtn, rcParent;
	BITMAP bmp;
	HBITMAP hMaskBmp;
	HDC hMemDC, hParentBgDC, hMaskDC;
	//取图片信息
	GetObject((HGDIOBJ)hBmp, sizeof(bmp), (LPVOID)&bmp);
	//取按钮RECT
	GetWindowRect(hBtn, &rcBtn);
	GetWindowRect(GetParent(hBtn), &rcParent);
	//创建Mask Bitmap
	hMaskBmp = CreateBitmap(bmp.bmWidth, bmp.bmHeight, 1, 1, NULL);
	//创建内存DC
	hMemDC = CreateCompatibleDC(hDC);
	hParentBgDC = CreateCompatibleDC(hDC);
	hMaskDC = CreateCompatibleDC(hDC);
	//为DC选择Bitmap
	SelectObject(hMemDC, (HGDIOBJ)hBmp);
	SelectObject(hParentBgDC, (HGDIOBJ)hParentBgBmp);
	SelectObject(hMaskDC, (HGDIOBJ)hMaskBmp);
	//生成Mask Bitmap,透明色部份为白色,其它部份为黑色
	SetBkColor(hMemDC, crTransparent);
	BitBlt(hMaskDC, 0, 0, bmp.bmWidth, bmp.bmHeight, hMemDC, 0, 0, SRCCOPY);
	//将按钮图片透明色部份设置为白色
	SetBkColor(hMemDC, RGB(255,255,255));
	BitBlt(hMemDC, 0, 0, bmp.bmWidth, bmp.bmHeight, hMaskDC, 0, 0, SRCPAINT);
	//复制父窗口背景到按钮
	BitBlt(hDC, 0, 0, bmp.bmWidth, bmp.bmHeight, hParentBgDC, rcBtn.left-rcParent.left, rcBtn.top-rcParent.top, SRCCOPY);
	//将按钮图片非透明部份设置为白色
	BitBlt(hDC, 0, 0, bmp.bmWidth, bmp.bmHeight, hMaskDC, 0, 0, MERGEPAINT);
	//合并
	BitBlt(hDC, 0, 0, bmp.bmWidth, bmp.bmHeight, hMemDC, 0, 0, SRCAND);
	//清理
	DeleteObject((HGDIOBJ)hMaskBmp);
	DeleteDC(hMemDC);
	DeleteDC(hParentBgDC);
	DeleteDC(hMaskDC);
}

void DrawBitmapButton2(
		HWND hBtn,
		HDC hDC,
		HBITMAP hParentBgBmp,
		HBITMAP hBmp,
		COLORREF crTransparent
	)
{
	RECT rcBtn, rcParent;
	BITMAP bmp;
	HDC hMemDC, hBgDC;
	//取图片信息
	GetObject((HGDIOBJ)hBmp, sizeof(bmp), (LPVOID)&bmp);
	//取按钮RECT
	GetWindowRect(hBtn, &rcBtn);
	GetWindowRect(GetParent(hBtn), &rcParent);
	//创建内存DC
	hMemDC = CreateCompatibleDC(hDC);
	hBgDC = CreateCompatibleDC(hDC);
	//为DC选择Bitmap
	SelectObject(hMemDC, (HGDIOBJ)hBmp);
	SelectObject(hBgDC, (HGDIOBJ)hParentBgBmp);
	//合并
	TransparentBlt(hBgDC, rcBtn.left-rcParent.left, rcBtn.top-rcParent.top, bmp.bmWidth, bmp.bmHeight, hMemDC, 0, 0, bmp.bmWidth, bmp.bmHeight, crTransparent);
	//复制父窗口背景到按钮
	BitBlt(hDC, 0, 0, bmp.bmWidth, bmp.bmHeight, hBgDC, rcBtn.left-rcParent.left, rcBtn.top-rcParent.top, SRCCOPY);
	//清理
	DeleteDC(hMemDC);
	DeleteDC(hBgDC);
}