65.9K
CodeProject 正在变化。 阅读更多。
Home

在不访问 SHFullScreen API 的情况下实现全屏

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.70/5 (10投票s)

2002 年 10 月 27 日

CPOL

2分钟阅读

viewsIcon

185717

downloadIcon

764

为您的 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)。

因此,您可以开始通过移动桌面上的所有控件来享受乐趣了 :)

© . All rights reserved.