仅适用于Windows API的Windows CE 5.0全屏窗口

时间:2010-07-02 13:28:36

标签: c winapi windows-ce fullscreen

我正在尝试为Windows CE 5.0编写全屏应用程序。我在Linux下使用CEGCC来编译我的应用程序,所以我只限于Windows API - 即没有花哨的GUI设计器,没有Visual Studio,没有MFC,没有.NET。

到目前为止,我使用SHFullScreen尝试了Microsoft的示例,但没有运气。我不想全局隐藏任务栏(即我希望它在我的应用程序关闭时表现正常,或者我应该说崩溃,并且无法恢复其状态。)

关于这个的任何想法?一个简单的程序,这样做(当然,不仅仅是“我想是这样”),即在Windows CE 5.0中显示一个窗口(或者我猜的任何Windows CE / Mobile / Embedded,所以我至少有一个线索)屏幕右下角的左上角,在任务栏上方,非常有帮助。

谷歌没有帮助我,如果你问的话(但也许我今天没有使用正确的条款)。

干杯

3 个答案:

答案 0 :(得分:2)

任务栏应该位于所有窗口之上并且不依赖于进程,因此要获得“全屏”效果,您必须隐藏它。

Here's a C# version应该很容易转换为C(因为它主要是P /调用C)。

当你的应用程序退出(并且应该)时,你的应用程序肯定会反转,但是如果它崩溃了,那么shell就无法“知道”它需要恢复任务栏。当然,如果您控制操作系统,您可以随时创建一个新的Shell来监控此情况,但我建议您尝试使您的应用不崩溃

答案 1 :(得分:1)

您可以使用Structured Exception Handling(SEH)在崩溃前恢复任务栏。

答案 2 :(得分:1)

我设法通过将WndProc放在case WM_CREATE下来解决我的所有要求:

int ScreenWidth = GetSystemMetrics(SM_CXSCREEN);
int ScreenHeight = GetSystemMetrics(SM_CYSCREEN);

SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, ScreenWidth, ScreenHeight, 0);
HWND TaskBarWnd = FindWindow("HHTaskBar", "");
if (TaskBarWnd != NULL)
    SetWindowPos(TaskBarWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE);