MFC下的aero效果学习笔记

最近想在MFC中用下aero

首先参考了

http://blog.csdn.net/polytechnic/article/details/5696797

中的一系列的步骤,进行了初步学习

但是对于其中按钮效果不是特别满意,文中的按钮解决是通过将窗口改为层窗口,设定透明色为别的颜色解决的,我期望找到可不用层属性的解决方案

后来参考了

http://blog.csdn.net/cometnet/article/details/6547504

对dwm有了更进一步的了解,知道了一些更丰富的内容

但是还是没有解决上面的疑问

最后,参考了TortoiseSVN的源码,终于在无层属性的窗口中实现了按钮的正常显示

主要技术点是使用uxtheme.h中的函数进行绘制

主要用到了

BeginBufferedPaint

DrawThemeBackground

DrawThemeTextEx

EndBufferedPaint

OpenThemeData

CloseThemeData

思路是在button的paint时,使用BeginBufferedPaint取得hdc,再绘制,颜色才正常

以上,为总结备忘

另外,最后还遗留了一个问题没有得到解答

工程编码为多字节时,按钮按下后状态不正常

unicode字符集就没问题

期望得到解答

时间: 2024-11-13 09:45:31

MFC下的aero效果学习笔记的相关文章

windows下dos命令的学习笔记

今天看Java视频,顺带学习了一下DOS命令,这也帮助我很好的理解Ubuntu下控制台命令. 1.dir (directory)查看某个盘或文件下的目录(所以文件及文件夹) 2.cd (change directory) 进入某文件目录下(如:cd apple*进入一个文件夹下,名称开头为apple后面可跟任意字符[*为通配符]) cd..     退回到上一级目录 cd\      退回到根目录(即某盘下) (注:想在当前目录下切换到其他盘下,直接在当前目录后写D:(如切换到D盘)) 3.md

用jQuery实现瀑布流效果学习笔记

jQuery一直没系统的学,只知道是js库,封装了好多js函数,方便了开发.以前做过一个原生的图片网站瀑布流效果,超级麻烦,这次用了jQuery方法,瞬间代码浓缩了,只有56行js代码.神奇的让我来把其中的几个函数具体记录一下. 首先,在WebStorm中新建一个工程,导入jquery库和几张img放在img文件夹下,新建html和css文件,用来搭建基本的网页结构.我们设定图片的宽度固定,高度不定,绝对定位,左浮动.这里就不细说了.我们主要讲jquery部分的知识. 这里我们讲一下我们要实现的

MFC下的DLL编程学习

1.DLL库与LIB库对比: 静态链接库Lib(Static Link Library),是在编译的链接阶段将库函数嵌入到应用程序的内部.如果系统中运行的多个应用程序都包含所用到的公共库函数,则必然造成很大的浪费.这样即增加了链接器的负担,也增大了可执行程序的大小,还加大了内存的消耗.Lib的好处是应用程序可以独立运行,而不需要在操作系统中另外安装对应的DLL. 而DLL采用动态链接,对公用的库函数,系统只有一个拷贝(一般是位于系统目录的*.DLL文件),而且只有在应用程序真正运行阶段调用时,才

centos下防火墙iptables日志学习笔记

一直找不到日志方面怎么弄,问了同事,同事给了个网址: http://www.thegeekstuff.com/2012/08/iptables-log-packets/ 下面就是我根据这个网址里面的设置自己实践的步骤以及自己的想法: 仔细看了一遍之后,感觉和以前玩的routeos的规则差不多: 1.就是先创建一个日志链 2.然后将所有的输入都跳转到这个日志链 3.然后就是记录日志链中drop调的数据 4.然后就是终止日志链 防火墙规则如下: iptables -N LOGGING iptable

iOS UIView动画效果 学习笔记

CGRect frame = _confirmV.frame; [UIView beginAnimations:nil context:nil];//动画定义开始 [UIView setAnimationDuration:0.5];//动画的时长 [UIView setAnimationDelay:0]; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(removeConfirmV

hellocharts折线图与柱状图的上下结合酷炫效果(学习笔记)

二话不说先贴图 贴代码: LineColumnDependencyActivity.java package com.shaoxin.mylinecolumndependencyactivity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.app.ActionBarActivity; import android.view.LayoutInflater;

wince7下SD host驱动学习笔记

SD驱动框架: wince系统中sd驱动框架如下图所示,软件部分总体上可以分为3个层.最底层的是SD Host Controller Driver(sdhc.dll),这一层就是对硬件SD控制器直接操作的驱动层.在系统移植时,这一层驱动就需要根据实际处理器的SD控制器做修改.中间一层是SD Bus Driver(sdbus.dll),顾名思义是SD总线的驱动代码,负责SD HOST层和Client层之间的通信.它由微软实现,在系统移植时这一层一般不需要修改.最顶层为Client层,这一层会根据不

angular学习笔记(十九)

本篇主要介绍angular使用指令修改DOM: 使用angular指令可以自己扩展html语法,还可以做很多自定义的事情.在后面会专门讲解这一块的知识,这一篇只是起到了解入门的作用. 与控制器,过滤器,服务,一样,可以通过模块实例的directive的方法来创建指令: var someModule = angular.module('SomeModule',[]); someModule.directive('directiveName',function(){ return { link: f

Cocos2d-x学习笔记(四)CCScene分析

原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38730335 前言 之前提到CCScene是场景,是整个游戏的舞台,通过查看源码我们不难发现CCScene也是CCNode的子节点,那么它也拥有我们上一节讲的CCNode的所有非private属性及方法. CCScene的作用十为了联系所有的CCNode节点(包括CCLayer.CCSprite等). 当清楚知道每个场景要显示的内容,那么定义出不同的CCNode,然后