Static Text超链接下划线重绘背景透明的有关问题!
Static Text超链接下划线重绘背景透明的问题!!!
------解决方案--------------------
- C/C++ code
void CXHyperLink::OnMouseMove(UINT nFlags, CPoint point) { if (!m_bOverControl) // Cursor has just moved over control { m_bOverControl = TRUE; if (m_nUnderline == ulHover) SetFont(&m_UnderlineFont); // m_UnderlineFont Invalidate(); SetTimer(m_nTimerID, 100, NULL); } CStatic::OnMouseMove(nFlags, point); } /////////////////////////////////////////////////////////////////////////////// // OnTimer void CXHyperLink::OnTimer(UINT nIDEvent) { CPoint p(GetMessagePos()); ScreenToClient(&p); CRect rect; GetClientRect(rect); if (!rect.PtInRect(p)) { m_bOverControl = FALSE; KillTimer(m_nTimerID); if (m_nUnderline != ulAlways) SetFont(&m_StdFont); rect.bottom+=10; InvalidateRect(rect); } CStatic::OnTimer(nIDEvent); }
- C/C++ code
BOOL CXHyperLink::OnEraseBkgnd(CDC* pDC) { CRect rect; GetClientRect(rect); if (m_crBackground != (UINT)-1) pDC->FillSolidRect(rect, m_crBackground); else pDC->FillSolidRect(rect, RGB(255,255,255)); //::GetSysColor(COLOR_3DFACE) return TRUE; } 这段代码是将矩形区域填充为白色,我现在想要透明的效果!!!
------解决方案--------------------
- C/C++ code
if (pWnd->GetDlgCtrlID() == //文本框) { pDC->SetBkMode(TRANSPARENT); }
------解决方案--------------------
DrawThemeParentBackground API
或者
CBitmap bmp;
CPaintDC dc(this);
CDC dcMem;
dcMem.CreateCompatableDC(&dc);
bmp.CreateComaptableBitmap(&dc, width, height);
dcMem.SelectObject(&bmp);
CWnd* pParent = GetParent();
CRect r;
GetWindowRect(&r);
pParent->ScreenToClient(&r);
dcMem.OffsetViewportOrg(-r.left, -r.top);
pParent->SendMessage(WM_PRINTCLIENT, (WPARAM)dcMem.GetSafeHdc(), PRF_CHECKVISIBLE | PRF_ERASEBKGND | PRF_CLIENT);
dcMem.DrawText(_T("our text"), ...);
dc.BitBlt(...);