备忘

 frost_sullivan是个电信专家,他关注人工智能、网络、电信



VC 关闭应用程序标题栏AERO效果(关闭透明化效果)

最近项目中要在标题栏添加自定义按钮,像QQ聊天窗口中“窗口设置”那个按钮一样,查阅了大量资料,使用网上现成NCBUTTON类,在不开启AERO效果情况下比较理想,但是一开启AERO就看不到按钮了,故又要想法关闭应用程序的AERO;

因为不可能要求用户把整个WIN7系统的都关闭了,所以只能编程实现关闭本程序的既可;

方法如下:

一,对于没有使用功能区的(CMFCRIBBONBAR)的界面,可以直接使用以下API进行完成;

  BOOL bDwm ;
  DwmIsCompositionEnabled(&bDwm);        //判断系统是否开启了AERO效果
  if (bDwm)
  {
   DWMNCRENDERINGPOLICY ncrp = DWMNCRP_DISABLED;
   DwmSetWindowAttribute(this->m_hWnd, DWMWA_NCRENDERING_POLICY, &ncrp, sizeof(ncrp));//禁用程序的AERO效果;
  }

 

需要引入头文件和LIB库

#include <dwmapi.h>
#pragma comment(lib, "dwmapi.lib")

以上方法,在DIALOG和非功能区项目中都达到我效果,但是在使得了CMFCRIBBONBAR时,标题栏就像被重绘了,变的很乱和不稳定,于是又找到下面的第二种方法;

 

二,在RIBBONBAR创建前添加

afxGlobalData.bDisableAero = TRUE;即可

参考文章:http://social.msdn.microsoft.com/Forums/vstudio/zh-CN/1526222f-6893-40f2-8332-b1a7738726f5/mfc-application-block-aero-peek-caption

 

 

 

PS:关于微软的AERO机制还是要详细查问一下有关DWM的知识才能理解;

以上代码测试环境为VS2008SP1


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值