绘制图片,该如何解决

绘制图片
在对话框上放三个控件,分别是CListCtrl、CTreeCtrl、CTabctrl,这三个控件都是自绘的,如何实控件从对话框背景图片截取图片设置为控件的背景?即控件的背景和对话框的背景看上去是共用的同一张图片!

------解决方案--------------------
背景图放在一个全局的内存DC中。
对话框,控件等,全部从内存DC中拷贝指定区域的图片做背景。
BitBlt 就可以实现了。
------解决方案--------------------
看看这个
http://www.vckbase.com/index.php/wv/206.html
------解决方案--------------------
探讨

"CListCtrl、CTreeCtrl、CTabctrl的背景"
如果背景是单一颜色,可以在CustomDraw中对每个item设置BkColor。
如果背景是图就麻烦了。这时要用‘透明窗口’的绘制方法。
就是把控件的图和背景图混合。
用EraseBkGrnd是不行的,因为控件绘制时会把背景全覆盖掉。

------解决方案--------------------
给父对话框发WM_ERASEBKGND或WM_PAINT消息

BOOL CListCtrlCl::OnEraseBkgnd( CDC* pDC )
{
CWnd* pParent = GetParent();
ASSERT_VALID(pParent);
CPoint pt(0, 0);
MapWindowPoints(pParent, &pt, 1);
pt = pDC->OffsetWindowOrg(pt.x, pt.y);
LRESULT lResult = pParent->SendMessage(WM_ERASEBKGND,(WPARAM)pDC->m_hDC, 0L);
pDC->SetWindowOrg(pt.x, pt.y);
return lResult;
}