最近工作中有个需求是将Icon转成带Alpha通道的Bitmap, 虽然网上有不少这方面的文章,但很多都是错的, 这里记录下,或许对后来人有用。 要实现这个功能,我们首先需要理解Icon的格式,我们可以看到Icon的结构如下: typedef struct _ICONINFO { BOOL fIco Read More
posted @ 2016-08-19 00:56 findumars Views(2201) Comments(0) Diggs(0)
今天在QQ群里有人问怎样实现将自己的窗口嵌入桌面,让它和桌面融为一体,就像很多桌面日历软件那样。我当时想到的就是建立一个Child Window,将他的父窗口设置成桌面Shell窗口就可以了。但是后来想想觉得不对,因为很多桌面日历窗口都有半透明和阴影效果,明显是用Layered Window实现的, Read More
posted @ 2016-08-19 00:49 findumars Views(4421) Comments(0) Diggs(0)
新版的QQ在截图时加入了窗口自动识别的功能,能根据鼠标的位置自动画出下面窗口的轮廓。今天有人在论坛上问起这个问题,下面我们来探讨这个功能的实现原理。首先我们要明白截图软件的基本原理,截图时实际上是新建了一个全屏窗口,然后将当前桌面的截图画在上面,大部分截图软件,包括QQ都是这么做的。根据鼠标位置获取 Read More
posted @ 2016-08-19 00:46 findumars Views(5845) Comments(0) Diggs(0)
最近的工作是给开源的DUILib支持Accessibility, 一些经验记录并分享下。 微软的Accessibility其实Windows平台上一个挺重要的东西, 尽管在国内不受重视,但是如果你的软件要出口欧美,Accessibility是必须的, 不然国外正规单位(政府,学校,大公司等)是禁止采 Read More
posted @ 2016-08-19 00:44 findumars Views(1543) Comments(0) Diggs(0)
思考一个最简单的程序行为:我们的Dialog上有一个Button, 当用户用鼠标点击这个Button时, 我们弹出一个MessageBox。 这个看似简单的行为, 谁能说清楚它是如何运行起来的,背后究竟发生了什么? 下面是我个人尝试的解答: (1)我们的鼠标点击事件到达设备的驱动程序, 驱动程序把消 Read More
posted @ 2016-08-19 00:36 findumars Views(782) Comments(0) Diggs(0)