Windows Mobile 5 中全屏窗口效果的实现

/ 0评 / 0

Published by orzz.org(). (https://orzz.org/windows-mobile-5-%e4%b8%ad%e5%85%a8%e5%b1%8f%e7%aa%97%e5%8f%a3%e6%95%88%e6%9e%9c%e7%9a%84%e5%ae%9e%e7%8e%b0/)

想在 Windows Mobile 系统中实现全屏效果,需要考虑两个方面.

如下图所示的 Mobile 系统界面,需要隐藏屏幕上部的任务栏,下部的菜单栏.


方法有两种,一种是彻底隐藏,另一种是利用api调整任务栏的显示.

使用这种方法的时候记得在程序退出的时候必须将任务栏还原,否则任务栏是不会自动出现的.

这种方法隐藏任务栏,在程序退出的时候不需要做什么特殊处理.但是在对 CWnd, CFrameWnd 一类的窗口做处理的时候一定要先 SetForegroundWindow 一次,而 CDialog 类型的窗口则不需要这一步.

另外在对 CWnd, CFrameWnd 类型窗口做处理的时候,还必须响应 WM_ACTIVATE 消息,在其中做同样的处理才能做到完全的隐藏任务栏效果.

由于此消息在程序退出及窗口切换的时候也被调用,因此直接在其中响应消息,会导致程序退出之后任务栏的刷新问题,及程序窗口无法切出.解决办法是设置成员变量判断程序是否退出,并检测此消息的参数来判断是否切换窗口.相关代码如下:

这个基本只有一种方法,同上面隐藏任务栏的第一种方法类似:

在程序退出的时候也必须将该窗口还原,否则此栏将不会自动出现.

在很多时候,我们仅需要隐藏任务栏,而对下方的输入法栏并不需要隐藏,如手机QQ的做法.但是在这个时候,弹出输入法软键盘的时候,屏幕上窗口将会自动向下收缩并露出上方被隐藏任务栏的区域.

解决方法是在主窗口里响应 WM_WININICHANGE 消息即可,不需要在里面添加自定义代码如下:

Published by orzz.org(). (https://orzz.org/windows-mobile-5-%e4%b8%ad%e5%85%a8%e5%b1%8f%e7%aa%97%e5%8f%a3%e6%95%88%e6%9e%9c%e7%9a%84%e5%ae%9e%e7%8e%b0/)

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据