2010-07-02 11 views
4

J'essaie d'écrire une application en plein écran pour Windows CE 5.0. J'utilise CEGCC sous Linux pour compiler mon application, donc je suis limité à Windows API - c'est-à-dire pas de concepteur d'interface graphique, pas de Visual Studio, pas de MFC, pas de .NET.Fenêtre plein écran Windows CE 5.0 avec API Windows uniquement

Jusqu'ici, j'ai essayé l'exemple de Microsoft en utilisant SHFullScreen, mais pas de chance. Je ne veux pas masquer globalement la barre des tâches (c'est-à-dire que je veux qu'elle se comporte normalement lorsque mon application se ferme, ou devrais-je dire se bloque, et est incapable de restaurer son état).

Des idées sur celui-ci? Un programme simple qui fait cela (à coup sûr, pas seulement "je pense que"), c'est à dire affiche une fenêtre dans Windows CE 5.0 (ou Windows CE/Mobile/Embedded je suppose, donc j'ai au moins un indice) qui s'étend de le coin supérieur gauche au coin inférieur droit de l'écran, au-dessus de la barre des tâches, serait vraiment utile.

Google ne m'a pas beaucoup aidé, au cas où vous le demanderiez (mais peut-être que je n'ai pas utilisé les bons termes aujourd'hui).

Vive

Répondre

1

j'ai réussi à résoudre tous mes besoins en mettant cela en WndProc sous 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); 
2

La barre des tâches est censé être au-dessus de toutes les fenêtres et ne dépend pas de traiter, de manière à obtenir un effet « plein écran », il faut le cacher.

Here's a C# version qui devrait être facile à convertir en C (puisque c'est surtout P/Invoquant C de toute façon).

Votre application peut certainement inverser cela quand elle quitte (et devrait), mais si elle se bloque, il n'y a aucun moyen pour le shell de "savoir" qu'il a besoin de restaurer la barre des tâches. Bien sûr, si vous contrôlez le système d'exploitation, vous pouvez toujours créer un nouveau shell qui surveille ce sceanrio, mais je vous conseille de faire en sorte que votre application ne se bloque pas à la place.

+0

Mon application peut se bloquer au cours du développement, parce que je n'ai pas le luxe d'un émulateur (donc je suppose que je pourrais utiliser une autre application sur le bureau pour restaurer ma barre des tâches manuellement lorsque cela se produit). En outre, je n'ai pas le contrôle de l'OS. Je vais très hardcore. J'ai juste espéré que quelqu'un savait comment faire fonctionner la fonction que j'ai mentionnée, puisque Microsoft la documente à cet effet. –

+0

SHFullScreen n'est pas garanti d'être présent - il est dans aygshell, donc si ce n'est pas dans le système d'exploitation, vous ne l'aurez pas. Appeler les API dans le lien que j'ai posté est plus universel. – ctacke

+0

Il est présent sur mon appareil. –

1

Vous pouvez utiliser Structured Exception Handling (SEH) pour restaurer la barre des tâches avant de tomber en panne.

+0

À noter que cela ne fonctionnera que si SEH fait partie de l'image du système d'exploitation. – ctacke