有时在自绘控件时,要让控件透明,可以采用下面的方法。
原理:得到父窗口的DC,直接把父窗口的DC画到临时的DC中。
void CButtonST::PaintBk(CDC* pDC)
{
CClientDC clDC(GetParent());
CRect rect;
CRect rect1;
GetClientRect(rect);
GetWindowRect(rect1);
GetParent()->ScreenToClient(rect1);
if (m_dcBk.m_hDC == NULL)
{
m_dcBk.CreateCompatibleDC(&clDC);
m_bmpBk.CreateCompatibleBitmap(&clDC, rect.Width(), rect.Height());
m_pbmpOldBk = m_dcBk.SelectObject(&m_bmpBk);
m_dcBk.BitBlt(0, 0, rect.Width(), rect.Height(), &clDC, rect1.left, rect1.top, SRCCOPY);
} // if
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &m_dcBk, 0, 0, SRCCOPY);
} // End of PaintBk
本文介绍了一种实现自绘控件透明效果的方法。通过获取父窗口的设备上下文(DC),并将其绘制到临时DC中来实现控件背景的透明。这种方法适用于需要精细控制界面显示的应用场景。

被折叠的 条评论
为什么被折叠?



