第一种 全透明 1.设置窗口透明
2.去除窗口透明
3.实际运行效果--------------------------------------------------------------------------- 第二种 让指定的部分为透明色彩 COLORREF maskColor = RGB(255,255,255); SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000); HINSTANCE hInst=LoadLibrary(_T("User32.DLL")); if(hInst) { typedef BOOL (WINAPI * MYFUNC)(HWND , COLORREF,BYTE,DWORD); MYFUNC fun=NULL; fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes"); if(fun)fun(this->GetSafeHwnd(),maskColor,255,1); FreeLibrary(hInst); } 在Opaint函数的 else函数中 else { CRect rect; CPaintDC dc(this); GetClientRect(rect); dc.FillSolidRect(rect,RGB(255,255,255)); //dc.FillSolidRect(rect,RGB(108,108,108)); CBitmap bmp1,bmp2; //bmp1.LoadBitmap(IDB_B_1); bmp1.LoadBitmap(IDB_BITMAP6); bmp2.LoadBitmap(IDB_BITMAP7); //bmp2.LoadBitmap(IDB_B_2); //CPaintDC dc(this); // device context for painting CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap* pbmpOld; pbmpOld = memDC.SelectObject(&bmp1); dc.BitBlt(0, 0, 2000, 1500, &memDC, 0, 0, SRCPAINT); // 注意最后一个参数 memDC.SelectObject(&bmp2); dc.BitBlt(0, 0, 2000, 1500, &memDC, 0, 0, SRCAND); // 注意最后一个参数 memDC.SelectObject(pbmpOld); memDC.DeleteDC(); CDialog::OnPaint(); } |
|