MFC 对话框 开启 Aero 毛玻璃 半透明 效果 (三)

来源:互联网 发布:费用优化步骤 编辑:程序博客网 时间:2024/05/17 03:39

 

这张图,要说有什么不完美的地方,那就是2个按钮的边框了。

按钮是默认的圆角矩形,可那周围一圈白白的算是怎么回事?跟 Aero 很不协调!

 

为2个按钮添加变量,可以用类向导,也可以手动添加。注意:类型要选择 CMFCButton 而不是 CButton!

 

在头文件中定义变量:


private:
    CMFCButton m_btnOK;
    CMFCButton m_btnCancel;

 

在 DoDataExchange() 中添加数据支持:


    DDX_Control(pDx, IDOK, m_btnOK);
    DDX_Control(pDx, IDCANCEL, m_btnCancel);

 

在 OnInitDialog() 中修改代码为:

    SetLayeredWindowAttributes(TRANSPARENT_COLOR, 0, LWA_COLORKEY);
    BOOL bDwm;
    DwmIsCompositionEnabled(&bDwm);
    if(bDwm)
    { 
        MARGINS mrg = {-1}; 
        DwmExtendFrameIntoClientArea(m_hWnd, &mrg);
        SetBackgroundColor(TRANSPARENT_COLOR);
        CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
        CMFCButton::EnableWindowsTheming();
    }

 

最终效果: