eMbedded Visual C++ 4.0eMbedded Visual C++ 3.0Pocket PC 2002eVCWindows Mobile中级开发Visual StudioWindowsC++
在不访问 SHFullScreen API 的情况下实现全屏
为您的 PocketPC 应用程序添加全屏功能。
引言
本文档展示了如何通过移除任务栏、菜单栏、SIP 按钮以及通过您自己的代码重新定位输入面板来实现 PocketPC 应用程序的全屏显示。
背景
如果您是 Win32 应用程序开发者,那么您应该对我在这个示例代码中使用的两个主要 API 比较熟悉。
- FindWindow
- MoveWindow
以及,在您日常工作中很少使用的 API:SystemParametersInfo。
使用代码
您只需要将两个函数包含到您的项目工作区中,它们是:
- InitFullScreen(void)
- DoFullScreen(bool)
当您访问 InitFullScreen 时,它会获取当前的桌面窗口工作区,然后将工作区设置为 240 x 320(PocketPC 中的全屏)。随后,它会定位任务栏、输入面板 (SIP) 和 SIP 按钮窗口句柄,并使用各自定义的窗口类存储原始窗口工作区。
注意:任务栏、SIP 按钮和 InputPanel 窗口类可以使用 eVC++ IDE 捆绑的 Spy++ 工具找到。
之后,当您访问 DoFullScreen 时,它会将任务栏、SIP 按钮移动到窗口工作区的底部 (320)。这样它们将不会在新定义的窗口工作区 (240 x 320) 中可见,反之亦然。
有关代码的更多详细信息,请参考 FullScreen.h/cpp。所有常规工作都在这两个函数中完成。
在访问上述函数之前,您需要执行以下第一步:
/*
Add the following code into your main project header or cpp file.
*/
extern RECT rtDesktop;
extern RECT rtNewDesktop;
extern RECT rtTaskBar;
extern int  InitFullScreen (void);
extern int  DoFullScreen   (bool);
其次,您需要在 WM_CREATE 消息中调用 InitFullScreen 函数,如下所示:
case WM_CREATE:
// Initialize full screen capability
InitFullScreen();
现在,您可以使用以下代码在全屏和非全屏模式之间切换您的应用程序:
// Switch to full screen mode
DoFullScreen(true);
// Switch to non-full screen mode
DoFullScreen(false);
关注点
在您逐步了解示例代码后,您将了解到 MS Windows 中的大多数控件都可以被其他应用程序轻松控制,前提是您已成功获取了相应的窗口句柄 (HWND)。
因此,您可以开始通过移动桌面上的所有控件来享受乐趣了 :)




