- 博客(8)
- 收藏
- 关注
原创 activity的task总结
Intent几种常见的flags:1.FLAG_ACTIVITY_NEW_TASK//根据affinity寻找或创建一个新的task来放置目标Activity,可以防止不同affinity的activity处于同一个task中2.FLAG_ACTIVITY_CLEAR_TOP//如果在栈中发现存在Activity实例,则清空这个实例之上的Activity,使其处于栈顶3.FLAG_AC
2015-10-10 10:57:39
412
原创 界面库对大dpi的支持
首先,通过调用SetProcessDpiAware或者配置manifest,让进程对dpi感知,这样在大dpi时,操作系统就不会虚拟dpi(模糊放大我们的界面),我们就能自己完全控制界面的dpi效果。操作系统的dpi只是一个系统的参数变量,并不会对我们的界面效果产生影响,要支持大dpi的界面效果,需要界面库按照当前dpi的大小,将界面的元素放大到对应的比例。我认为需要处理以下方面:
2014-11-06 11:18:35
618
原创 跨线程弹出菜单
大家知道,调用TrackPopupMenu弹出菜单时,要求调用这个api的线程和接受菜单消息的窗口属于同一个线程,不然菜单不能成功的弹出。我最近的一个项目里,就遇到了这个问题:要在UI线程弹出菜单,但是接收菜单消息的窗口在另外一个逻辑线程。为了能够正常弹出菜单,我们一开始的想法是规避这个问题,让菜单在同一个线程工作,但是这样对现有的架构改动比较大。我最后是这样解决这个问题的:1.创
2011-12-15 23:15:44
358
原创 使用layered窗口实现界面动画
现在流行的界面,基本都会支持动画效果,如果你的界面库没有这方面的支持,可以使用layered窗口,实现一些动画效果。先来介绍下常用的几个基本的动画效果:1.闪动的图标,用于指引用户点击。2.播放一个简单的动画:比如一个垃圾桶按钮点击后,会动态打开,甚至会从里面飞出来一
2011-09-24 12:42:46
509
原创 Aero自绘窗口标题,保留系统按钮
1.自绘标题,保留系统按钮窗口style需要是WS_OVERLAPPEDWINDOW 我之前用了WS_OVERLAPPED|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_BORDER|WS_CAPTION;没有WS_THICKFRAME,开启Aero时,界面启动后会有一个白边框,刷新后正常。2.aero时窗口的透明效果在激活和非激活时是不同的,如果你的界
2011-06-29 10:05:00
1057
原创 定时器的使用
前段时间开发浏览器的标签动画,效果类似chrome的标签动画,遇到了一个问题:没有合适的定时器。如你所知,windows的wm_timer优先级太低,导致动画无法按照预期的帧数绘制。我当时的解决方法是自己起线程,在线程里通过sleep来模拟定时间隔,然后sendmessage到界面线程来驱动动画过程。为了优化,我在每次动画停止时也销毁定时器线程。最后的效果在xp系统上看起来不错,但
2011-06-28 10:23:00
245
原创 GDI绘制png
最近做的一个项目,用GDI+来做绘制,最后发现效率很慢,和GDI的效率相差不止一个数量级。最后决定还是用GDI来绘制。问题很快出现了,以前的很多效果是带alpha透明的png来贴图实现的,这用GDI+很容易做到,但是用GDI就很麻烦了。我想了一个折中的办法,是这样做的:用GDI+把png加载起来,然后生成一个32位的带alpha通道的位图,然后使用GDI的alphablend进行绘制。
2010-09-28 21:26:00
1653
3
原创 局部透明窗口的实现
经常能看到一些软件弹出局部透明的窗口,看起来很轻很薄,其实实现起来也很简单。1.窗口全透明,用SetLayeredWindowAttributes设置alpha。2.窗口局部透明 如果不带子窗口,用UpdateLayeredWindow很容易就能实现。 如果有子控件,用UpdateLayeredWindow后子控件的绘制会出问题。有个巧妙的方法可以解决这个问题:假设A窗口
2010-09-28 21:15:00
1818
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人