实现控件透明背景的几种方案
2010-05-28 10:09
543 查看
实现控件透明背景有如下几种方案:
在父窗口中,通常是对话框中响应WM_CTLCOLOR消息,在OnCtlColor函数中修改对应CONTROLID的所有控件的背景色。如:
创建派生类,并响应派生类的WM_PAINT消息。如:
在文字改变比较频繁的情况下,须结合如下代码:
对话框中:
创建派生类,映射ON_WM_CTLCOLOR_REFLECT()这个消息,响应函数为afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);如:
我个人比较倾向于方案3。
在父窗口中,通常是对话框中响应WM_CTLCOLOR消息,在OnCtlColor函数中修改对应CONTROLID的所有控件的背景色。如:
if (pWnd->GetDlgItemID()==IDC_STATIC) //IDC_STATIC为你的控件名 { pDC->SetBkMode(TRANSPARENT); return (HBRUSH)::GetStockObject(HOLLOW_BRUSH); }
创建派生类,并响应派生类的WM_PAINT消息。如:
void CStaticEx::OnPaint() { CPaintDC dc(this); // device context for painting CRect rc; GetClientRect(rc); dc.SetBkMode(TRANSPARENT); dc.DrawText(m_sText, rc, DT_CENTER); }
在文字改变比较频繁的情况下,须结合如下代码:
void CStaticEx::SetText(CString sText) { m_sText = sText; Invalidate(false); }
对话框中:
pQSDate->GetWindowRect(&rc); ScreenToClient(&rc); InvalidateRect(&rc, FALSE); pQSDate->SetText(sTime);
创建派生类,映射ON_WM_CTLCOLOR_REFLECT()这个消息,响应函数为afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);如:
HBRUSH CStaticEx::CtlColor(CDC* pDC, UINT nCtlColor) { pDC->SetTextColor(m_Color); pDC->SetBkMode(TRANSPARENT); if (!m_Brush.m_hObject) { CClientDC clientDC(GetParent()); CRect rc, rc1; GetClientRect(rc); GetWindowRect(rc1); GetParent()->ScreenToClient(rc1); CDC bgDC; CBitmap bgBmp; CBitmap* pOldBgBmp; bgDC.CreateCompatibleDC(&clientDC); bgBmp.CreateCompatibleBitmap(&clientDC, rc.Width(), rc.Height()); pOldBgBmp = bgDC.SelectObject(&bgBmp); bgDC.BitBlt(0, 0, rc.Width(), rc.Height(), &clientDC, rc1.left, rc1.top, SRCCOPY); bgDC.SelectObject(pOldBgBmp); m_Brush.CreatePatternBrush(&bgBmp); } return (HBRUSH)m_Brush; }
我个人比较倾向于方案3。
相关文章推荐
- 实现控件背景透明的几种方法
- QT 实现子控件的透明,可以实现主窗口设置背景皮肤
- 半透明窗口中显示标准控件(控件与文字不透明)的实现方案(附源码)
- 怎样实现QT3控件的背景为透明?
- MFC中实现Static控件背景透明
- MFC实现背景透明,控件不透明的对话框,且点击图片有事件响应
- MFC一一添加背景图片并让控件实现透明的
- 实现对话框在位图作为背景时的控件透明
- 实现对话框在位图作为背景时的控件透明
- 半透明窗口中显示标准控件(控件与文字不透明)的实现方案(附源码)
- 实现控件的透明背景
- C#控件背景透明的几种解决方案
- C#控件背景透明的几种解决方案
- 在Vb.net中实现透明控件背景
- 实现控件的透明背景
- EVC中透明控件的实现
- android 4.1.2 launcher2实现应用列表背景透明
- HTML+CSS----IE6下背景透明实现-css/js--png图片
- IOS实现自定义透明背景的tabbar
- mfc中如何实现窗体半透明 但是控件不透明