Windows Mobile程序全屏与非全屏
来源:互联网 发布:电商平台数据库设计 编辑:程序博客网 时间:2024/05/21 08:41
Windows Mobile如何让应用程序全屏显示,网上问这个问题的人很多,你也能轻松找到答案,但很多人反映效果不完美,如切换程序后又没了全屏效果,这次我花了些时间整理出我的实现,当然我也不保证我的就很完美,但至少在我用了这么久之后发觉自己这种方法还是蛮可靠的。
所谓全屏,也就是让应用程序窗口占满整个屏幕,任务栏不显示,菜单栏不显示,另外顺便在这里普及下知识,什么叫任务栏(Task Bar),什么叫菜单栏(Menu Bar),什么是开始图标(Start Icon),什么是软输入法按钮(SIP Button)。直接看图:
图片无法上传不好意思。。。。。。。
通过上图,我想大家也都了解怎么回事了,真是长篇大论不如一张小图。任务栏你可以理解为Windows Mobile的一部分,跟Windows的任务栏一样,是一直存在的,开始图标就处于任务栏的左边,跟Windows不一样的是Windows Mobile的任务栏一般处于屏幕顶端;而菜单栏则跟Windows的菜单也有点像,它属于应用程序的一部分,当应用程序不创建它的时候,它就是不存在的,当然了,它和Windows的菜单一样,并不包含在窗口客户区内。
知道这个之后,那我们的工作就比较明确了:第一,不要创建菜单栏;第二:隐藏掉任务栏或者把任务栏放在我们的窗口的下面。当然了,还要把窗口调整为屏幕大小。就这么多了。相应的API为SHFullScreen,看一下MSDN,貌似很简单,OK,直接在WM_CREATE中加入SHFullScreen(SHFS_HIDETASKBAR)如何?
结果没有反应,再仔细看看MSDN的说明,对于SHFS_HIDETASKBAR参数有以下描述:It is the responsibility of the application to make sure it is sized FULL SCREEN before using this flag. Otherwise, it will appear as though the function did nothing。注意“before”这个词,看来我们要在掉SHFullScreen之前将窗口位置及大小调整为全屏。代码:
SetRect(&rectFullScreen, 0, 0, GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
SetWindowPos(hWnd, 0, rectFullScreen.left, rectFullScreen.top, rectFullScreen.right-rectFullScreen.left, rectFullScreen.bottom-rectFullScreen.top,SWP_NOZORDER);
SHFullScreen(hWnd, SHFS_HIDETASKBAR);
这样就能够全屏了,但还不够,为什么?也许你注意到软输入法按钮并没有被隐藏掉,你再试试看再打开一个程序,然后回到你的全屏程序去,这时候你发觉全屏变成了非全屏了,如图:
图片无法上传。。。。
所以我们还得做些事情,我直接给出代码:
//Try to hide the boring SIP button.
{
DWORD dwHideOption = SHFS_HIDESIPBUTTON;
if(g_bFullScreenState)
dwHideOption |= (SHFS_HIDETASKBAR);
if(wParam==WA_ACTIVE || wParam==WA_CLICKACTIVE)
SHFullScreen(hWnd, dwHideOption);
}
// Notify shell of our activate message
SHHandleWMActivate(hWnd, wParam, lParam, &s_sai, FALSE);
break;
其中的“g_bFullScreenState”是程序记录是否全屏状态的一个布尔型变量,然后你再试试,我不确切在你机器上是否OK,但在我这里尝试了6.0和6.5的机器,都是没问题的,你把程序切来切去都是可以保证看到它全屏的,而且全屏与非全屏间还可以自由切换。这是我写的demo的截图:
图片无法上传 。。。。
- Windows Mobile程序全屏与非全屏
- [Windows Mobile]全屏对话框
- [Windows Mobile]全屏对话框
- Windows Mobile 窗口全屏
- windows mobile 全屏代码
- [Windows Mobile]全屏对话框
- windows mobile全屏
- windows mobile下实现非全屏窗口显示
- windows mobile下实现非全屏窗口显示
- Windows Mobile Phone全屏开发
- Windows Mobile窗口全屏总结
- Windows Mobile窗口全屏总结
- Windows Mobile窗口全屏总结
- Windows Mobile窗口全屏总结
- windows mobile 程序启动时全屏显示图片
- android代码全屏与非全屏
- android 设置全屏与非全屏
- 全屏/非全屏切换
- Android UI学习 - Menu菜单
- Spring MVC RestFul 中的 DELETE 传输方式
- 线程池在socket通信中的应用
- Requires VIBRATE permission
- Using openCV for Mac OS in XCode
- Windows Mobile程序全屏与非全屏
- Android 获取系统或SDCARD剩余空间信息
- magent编译出错
- css解决td单元格内文字溢出
- Out-of-order execution
- Yahoo Web UIs-Java开发者丰富的Web UI
- CentOS可视界面|图形界面安装
- Android 底层基础知识
- Yahoo!创始人:杨致远的故事