请问怎么实现像 QQ 2009,飞信 一样通过 颜色,透明度来改变整个界面的方法或相关示例,谢谢。

解决方案 »

  1.   

    1. 对于从CFormView继承下的窗体
    只要修改OnDraw函数即可,代码如下:
    void CHCPAView::OnDraw(CDC* pDC) 
    {
        // TODO: Add your specialized code here and/or call the base class
    /*----------------------------------------------------------
    下面程序为改变程序主界面的显示颜色,如果不为CFORMVIEW类子类,
    要通过SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(BLACK_BRUSH));
    来修改主界面的颜色.本项目中CHCPAView类,为CFORMVIEW类继承下来的
    ----------------------------------------------------------*/     
        CHCPADoc* pDoc = GetDocument();                            // 获取窗体句柄
        ASSERT_VALID(pDoc);
        CRect m_rcClient;                                                
        GetClientRect(&m_rcClient);                                // 把要改变颜色的区域名柄赋值给m_rcClient    pDC->FillSolidRect(&m_rcClient, RGB(222,223,222));    // 设置颜色 RGB(红,蓝,绿)
        //pDC->FillSolidRect(&m_rcClient, RGB(236, 233, 216));    // windows系统色
                                                                // 在选择颜色时,可以通过QQ软件的剪图工具来获取RGB值
    }
    2. 对于CDialog窗体.
    A.先新建一个画刷(类的公有变量),
    public:
        CBrush    m_brush;B.在OnCtlColor(继承下来的)函数返回该画刷即可
    HBRUSH CPaAlarmDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
        
        // TODO: Change any attributes of the DC here
        
        m_brush.CreateSolidBrush(RGB(255,0,0));    // 画刷加载红色
        
        // TODO: Return a different brush if the default is not desired
        return m_brush;
    }
      

  2.   

    仅仅使用MFC肯定不行的,太麻烦了。
    必须使用第三方界面库。
      

  3.   

    qq2009 使用的是directUI界面类库
      

  4.   

    楼主这样的需求可以用商用的第三方界面库去实现。一般自己做的话比较复杂
    网上有许多这样的例子,可以下载学习以下
       BCGControlBar等等都还比较好用
      

  5.   

    去看看这个就知道怎么做了
    http://www.codeproject.com/KB/miscctrl/Microsoft_Media_Player_UI.aspx
      

  6.   

    简单的可以自己做,不过随着需求的增多、要求的增高,越往后就会发现越难维护或扩展,甚至还会带来其他的负页影响,最好还是用第三方商业库来做,比较稳定,操心也少。我们原来也是自己做换肤界面库,不过后来就发现力不从心、效率提不上去、工作量大等很多情况,在用过一年多后就买了SKIN++的界面库。
      

  7.   

    楼上买的skin++,how much 呀