愁死我了,绞尽脑汁一也没搞出这种效果啊。
见图
此为Windows 照片和传真查看器底部的工具条。
如此宽的下边框是状态栏的么,还有这个工具条是如何保持透明而工具按钮可见的呢。望热心大牛不吝赐教。

解决方案 »

  1.   

    非模态窗体透明,重点是设置Style后SetLayeredWindowAttributes这个函数,几个参数可以研究下 SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,\
    GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000); SetLayeredWindowAttributes(GetSysColor(COLOR_BTNFACE),10,1);
      

  2.   

    圆形边框是CreateRoundRgn,SetWindowRgn,话说楼主,你实验过?
    这个方法不能用作子窗体(WS_CHILD风格)不然会失效。Create的时候别用this指针,用NULL把位置定死就可以了
      

  3.   

    我之前做透明效果都用这个。透明动画log,半透明窗体都行。估计参数设置错误
      

  4.   


    大神求指点
    我想要
    这个软件的悬浮工具条功能  要求 child并且半透明 , 怎么弄的 , 希望多多指点!
      

  5.   

    那个“工具栏”应该是Aero效果。
    控件的半透明效果,其实用AlphaBlend也能做到。
      

  6.   

    楼主发这个,不是分层窗口(LayeredWindow),而是vista/windows7里的AERO效果.
    参考:使用DWM实现Aero Glass效果
    http://blog.csdn.net/cometnet/article/details/6547504
    sign-----------------------------------------------------------------------

      

  7.   


    谢前辈指点了,这些帖确实很有用,但是我想我的东西在xp系统上也有这个效果,Aero 不太能满足这个需要啊
      

  8.   

    你这么谦虚,不说两句都不行了上策:
    开双缓冲,在这基础上在为那个区域开一个缓冲,单独针对他画图和响应消息
    这等于是自定义自己的窗口,相当方便和可控制,效果非常的好中策:
    从CWnd派生一个窗口
    同样开双缓冲
    用半透明的方式拷贝第二缓冲
    要求是响应WM_ERASEBKGND消息,把代码清了,只留个return true;
    这个的缺点是该窗口不能移动,移动就木有效果了下策:
    学习用第三方界面库
      

  9.   

    在移动窗口的时候哗啦啦的闪烁
    解决办法:
    响应WM_ERASEBKGND消息,把代码清了,只留个return true;
      

  10.   

    BOOL XXXXXX::OnEraseBkgnd(CDC* pDC) 
    {
    return TRUE;
    }
      

  11.   


    我在绘制的过程中使用了双缓冲了 ,用的是Keith Rule 前辈写的  CMemDC类,在其他的地方都处理的挺好的,而且,擦除过程也已经处理过了。马上到了下班的时间了,前辈,回去再跟你交流。
      

  12.   

    应该插入的是一个透明的png图片,你用cximage往按钮上贴图,把CButton重写。BOOL CMyButton::OnEraseBkgnd(CDC* pDC) 
    {
    // TODO: Add your message handler code here and/or call default

    //return CButton::OnEraseBkgnd(pDC);
    return TRUE;
    }
    void CMyButton::PreSubclassWindow() 
    {
    // change window style to allow owner draw
    ModifyStyle(0, BS_OWNERDRAW | BS_PUSHBUTTON);
    is_pressed=false;
    CButton::PreSubclassWindow();
    }
    void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
    {
    // TODO: Add your message handler code here and/or call default
        CRect rc=lpDrawItemStruct->rcItem;
    CDC dc;
    dc.Attach(lpDrawItemStruct->hDC);
    dc.SetBkMode(TRANSPARENT);
    //dc.Ellipsedc(0,0,rc.Width(),rc.Height());  
    if (m_pImage!=NULL)
    {
    CDC* pRealDC = CDC::FromHandle(lpDrawItemStruct->hDC);
    m_pImage->Draw(pRealDC->GetSafeHdc());

    }else
    {
    CButton::DrawItem(lpDrawItemStruct);
    }
    dc.DeleteDC();
    }void CMyButton::SetImage(CxImage *image)
    {
    m_pImage = image;
    }
    这是重写cButton.
    下来创建按钮就行,往上贴图就可以了
      

  13.   


    哎呀,非常悲剧的发现啊  Aero Glass 放到w8下完全失效了