欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请问,类似手机中滑动屏幕切换窗口效果实现中的有关问题

更新时间: 2014-01-05 03:10:24 责任编辑: Author_N1

 

请教,类似手机中滑动屏幕切换窗口效果实现中的问题
如有两个窗口A B 
在A窗口中,滑动(通过MouseMove控制)后显示窗口B,并使B活动

现在抓一张窗口B的图片,在窗口A中用DC拼合,并显示组合DC一部分的方式,
可以做出滑动的效果来(上网不方便,代码没有,大概意思如下)
窗口A:
用CreateCompatibleBitmap()建立两倍screen大小的图像
将窗体A的DC复制到左边,将窗口B的图片复制到右边
滑动时,显示图像的响应部分就行

但是这样的问题是,如果窗口B发生了改变(控件、数据等),则滑动时不能
体现这些变化

现在想使用直接获取窗口B的DC的方式来进行处理
(只需要滑动开始瞬间的状态就好,不需要实时状态)

但是通过GetWindowDC的方式不可实现,GetLastError后,错误码为0x06
怀疑句柄不对,用ShowWindow进行了测试,窗口B能够正常显示,此时GetWindowDC
可以成功,但是复制到组合图像上的DC图像不对,是窗口A的图像
试过使用GETDC也不行。

这是为什么?如果要实现上面的功能,该如何做?
--参考方法--
但是这样的问题是,如果窗口B发生了改变(控件、数据等),则滑动时不能
体现这些变化

--------------
可以使用消息通知窗口A进行刷新 或者强制刷新窗口A


--参考方法--
最近正好在搞wince界面特效,但我的是在一个窗口中切换界面A,B,和楼主的切换A,B窗口不一样。我是新手,说下自己的理解,正确与否不清楚。。。
1.设备DC只有一个,假如有窗口A,B(全屏),A显示则GetDC和GetWindowDC都是A的界面,B显示同理,都不显示则是桌面的画面,所以GetWindowDC其实是根据窗口是否显示以及窗口大小剪切设备DC相应位置的内容;
2.通过内存DC获取,窗体的绘制都是先绘制到内存DC再一次性拷贝到设备DC(自己的框架贴图,MFC或C#不清楚怎么绘制),拼接两个内存DC再拷贝到设备DC即可实现滑动效果;
3.通过设备DC获取,先显示A,GetWindowDC保存dc1,再显示B,GetWindowDC保存dc2,再拼接dc1和dc2(可选项,呵呵);
4.如果只是获取一次然后拼成两倍screen大小bmp,肯定不能反映实时状态;如果新建一个tempdc,每次绘制都是将dc1和dc2的相应像素拷贝过来,那整个滑动过程的图面都是实时的。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:10:24
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19131/
本文WWW.DOC100.NET DOC100.NET版权所有。