半透明控件的实现原理:
创建一个临时DC,发消息给父控件告知其绘制其内容于临时DC上,然后将自己相对于父控件的那块区域的绘制COPY到自己的PaintDC上,此后再做其他绘制。
代码思路如下:
Child:
{
CPaintDC dc;
CMemDC mdc;
//创建临时DC
CBitmap bitmap;
CDC cdc;
::SendMessage(hParent, WM_COPY_PARENT, cdc, 0); //发消息通知父控件将其内容绘制在cdc上
paint cdc to mdc
do your paint on mdc
}
Parent:
void DoPaint(HDC hdc, CRect rc);
void OnPaint()
{
DoPaint();
}
LRESULT OnCopyParent(WPARAM w, LPARAM p)
{
HDC hdc = w;
DoPaint(w);
return 0;
}
源码地址:点击打开链接
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/zhoujielunzhimi/article/details/46815889