复制窗口指定位置的图片

  

有时候为了制作透明的控件,特别是外边缘不规则的控件,可将控件背后的窗口图片复制到控件中,重绘。这样控件看起来就象透明的。

. h文件中声明变量   CMemoryDC , m_EmptyMemDC;//空白内存直流(另外封装的疾病预防控制中心的类)   cbitmap,,, m_BmpBackground;   void  CLabel: CopyBackground (CDC  *, pDC)   {   CRect  theRt;//获取控件大小(此处是自定义的控件,在控件内部执行)   GetWindowRect(及theRt);      CPoint  pt (theRt.left, theRt.top);   ::ScreenToClient (GetParent ()→m_hWnd,和pt);      CClientDC , clientDC(这→GetParent ());   ,,//创建兼容位图   m_BmpBackground.CreateCompatibleBitmap(及clientDC, m_rect.Width (),, m_rect.Height ());   HBITMAP  hOldBitmap =, (HBITMAP) m_EmptyMemDC.SelectObject(及m_BmpBackground);      ::StretchBlt (m_EmptyMemDC, 0, 0,, theRt.Width (),, theRt.Height (),, clientDC.m_hDC,,   ,,pt.x, pt.y,, theRt.Width (),, theRt.Height (),, SRCCOPY);      pDC→BitBlt (0, 0, m_rect.Width (),, m_rect.Height (),,, m_EmptyMemDC,, 0, 0), SRCCOPY);      m_EmptyMemDC.SelectObject (hOldBitmap);   m_BmpBackground.DeleteObject ();      }


复制窗口指定位置的图片