解决方案 »

  1.   

        //把父窗口的背景图复制到按钮的DC上,实现视觉透明----------------
        CMainDlg* pParent=(CMainDlg*)GetParent();
        CPoint pt(0,0);
        MapWindowPoints(pParent,&pt,1);
        pParent->m_bkImage.BitBlt(hDC,rc,pt,SRCCOPY);
     
     
        //-------------------------------------------------------------
        int nAlpha=100;//0--255
        int nOffset=0;
     
        HBRUSH hbr=CreateSolidBrush(m_bkColor);
        FillRect(hMaskDC,&rc,hbr);
        DeleteObject(hbr);
     
        if(m_bDisable){
            nAlpha=100;
        }else if(m_bDown){
            nAlpha=180;
            nOffset=1;
        }else if(m_bOver){
            nAlpha=150;
        }else{
            nAlpha=100;
        }
        BLENDFUNCTION blend;
        memset( &blend, 0, sizeof( blend) );
        blend.BlendOp= AC_SRC_OVER;
        blend.SourceConstantAlpha= nAlpha; // 透明度 最大255
     
        HRGN hRgn=CreateRoundRectRgn(0,0,nWindth,nHeight,3,3);
        SelectClipRgn (hDC,hRgn);
    这段alphablend的用法有介绍吗?为所未闻 提供相应资料 多谢了啊
      

  2.   


    我以前写过类似的, 可以参考下 。
    http://www.cppblog.com/weiym/archive/2012/08/23/187998.html
      

  3.   

    谢谢这位朋友
    DirectUI的方法我知道
    我就是想尝试独立句柄控件的实现
      

  4.   


    我里面的方法不是用DirectUI。
    也不是通过背景图对位,而是让父窗口相应WM_PRINTCLIENT来实现的。
      

  5.   

    CMainDlg* pParent=(CMainDlg*)GetParent();
        CPoint pt(0,0);
        MapWindowPoints(pParent,&pt,1);
        pParent->m_bkImage.BitBlt(hDC,rc,pt,SRCCOPY);
    还是要父窗口保存背景图片