15,980
社区成员




m_bmpStatic.Create( NULL, WS_CHILD|WS_VISIBLE|SS_BITMAP, CRect(20, 20, 120, 90), this, 111 );
SetWindowLong( m_bmpStatic.GetSafeHwnd(), GWL_EXSTYLE,
GetWindowLong( m_bmpStatic.GetSafeHwnd(), GWL_EXSTYLE)|0x80000 );
HMODULE hModule = LoadLibrary( "User32.DLL" );
if( hInst )
{
typedef BOOL (WINAPI *MYFUNC)( HWND, COLORREF, BYTE, DWORD );
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress( hInst, "SetLayeredWindowAttributes" );
if(fun)
fun( m_bmpStatic.GetSafeHwnd(),RGB(255, 0, 0), 0, 1 );
FreeLibrary( hInst );
}
CBitmap bmpMyBmp;
bmpMyBmp.LoadBitmap( IDB_STATICBMP );
BITMAP bmp;
bmpMyBmp.GetBitmap( &bmp );
CDC dcCompatible;
dcCompatible.CreateCompatibleDC( pDC );
dcCompatible.SelectObject( &bmpMyBmp );
CRect rect;
GetClientRect( &rect );
pDC->StretchBlt( 0, 0, rect.Width(), rect.Height(), &dcCompatible, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY );
typedef BOOL (WINAPI * TRANSPORTBLT)( HDC, INT, INT, INT, INT, HDC, INT, INT, INT, INT, COLORREF );
RECT rc;
BITMAP bmTime;
HBITMAP hOld, hNewBitmap;
HDC hTimeDC;
BOOL bRet;
COLORREF color = RGB(255,0,0);
HWND hWnd = this->GetSafeHwnd();
HBITMAP hBmp = (HBITMAP)bmpMyBmp.GetSafeHandle();
HDC hdc = pDC->GetSafeHdc();
HMODULE hModule = LoadLibrary( "Msimg32.dll" );
TRANSPORTBLT TransparentBlt = (TRANSPORTBLT)GetProcAddress( hModule, "TransparentBlt" );
GetWindowRect( &rc );
GetObject( hBmp, sizeof(bmTime), &bmTime );
hTimeDC = CreateCompatibleDC( hdc );
hNewBitmap = CreateCompatibleBitmap( hdc, bmTime.bmWidth, bmTime.bmHeight );
hOld = (HBITMAP)SelectObject( hTimeDC, hNewBitmap );
bRet = TransparentBlt( hTimeDC, 0, 0, bmTime.bmWidth, bmTime.bmHeight, (HDC)hBmp, 0, 0, bmTime.bmWidth, bmTime.bmHeight, color );
DeleteDC( hTimeDC );
DeleteObject( hNewBitmap );