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
)。
因此,您可以开始通过移动桌面上的所有控件来享受乐趣了 :)