代码之家  ›  专栏  ›  技术社区  ›  Radu C

仅限带Windows API的Windows CE 5.0全屏窗口

  •  4
  • Radu C  · 技术社区  · 14 年前

    我正在尝试为WindowsCE5.0编写一个全屏应用程序。我在Linux下使用CEGCC来编译我的应用程序,所以我只限于windowsapi,也就是说,没有华丽的GUI设计器,没有visualstudio,没有MFC,没有.NET。

    到目前为止,我尝试了微软的例子 SHFullScreen ,但运气不好。我不想全局隐藏任务栏(也就是说,我希望它在我的应用程序关闭时正常运行,或者我应该说 撞车 ,并且无法恢复其状态)。

    对这个有什么想法吗?一个简单的程序可以做到这一点(当然,不仅仅是“我这么认为”),即在WindowsCE5.0(或任何WindowsCE/Mobile/Embedded,我猜,所以我至少有一个线索)中显示一个窗口,从屏幕的左上角延伸到右下角,在任务栏上,会非常有用。

    如果你问的话,谷歌帮不了我多少忙(但也许我今天用的词不对)。

    3 回复  |  直到 14 年前
        1
  •  2
  •   ctacke    14 年前

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

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

    当你的应用程序退出(并且应该退出)时,它当然可以逆转这种情况,但是如果它崩溃了,shell就没有办法“知道”它需要恢复任务栏。当然,如果你控制操作系统,你总是可以创建一个新的Shell来监视这个sceanrio,但是我建议你尝试制作你的应用程序 相反。

        2
  •  1
  •   Trevor Balcom    14 年前

    Structured Exception Handling (SEH)在崩溃前恢复任务栏。

        3
  •  1
  •   Radu C    14 年前

    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);