2010-01-08 7 views
1

J'ai une application .NET ciblée pour s'exécuter sur Windows Mobile 5 et Windows CE .NET 4.2 et il existe quelques différences mineures entre comment les formes affichent que j'essaie de converger.Modification de [X] à OK sur le formulaire dans Windows CE .NET 4.2 dans l'application .NET

Sur le périphérique WM, un formulaire s'affiche avec un bouton "OK" en haut à droite tandis que sur CE, le même formulaire affiche un "X". Y at-il de toute façon sur CE pour l'afficher "OK"? Je l'ai vu « OK » apparaître sur les boîtes de message il semble que je devrais pouvoir ...

Répondre

1

Le plus simple est sans doute de définir le style de la fenêtre des formulaires ControlBox = False et MinimizeBox = False puis appelez SHDoneButton dans la peinture de la forme gestionnaire d'événement et quand il est activé ou montré. Vous êtes vraiment supposé avoir besoin de le faire avant que le formulaire ne devienne la fenêtre de premier plan, mais j'ai trouvé que vous devez également l'appeler dans le gestionnaire d'événements Paint. Alors SHDoneButton(this.handle, SHDB_SHOW)SHDB_SHOW = 0x0001 vous aurez besoin:

[DllImport("aygshell.dll")] 
public static extern bool SHDoneButton(IntPtr hWnd, UInt32 dwState); 

quelque part aussi bien.

par la documentation liée:

En règle générale, le bouton Terminé est géré par le shell, et afficher ou masquer le bouton OK se fait automatiquement. Une fenêtre de niveau supérieur qui nécessite l'affichage du bouton Terminé doit utiliser le style de fenêtre WS_EX_CAPTIONOKBTN.

Pour que le bouton OK s'affiche, assurez-vous que votre fenêtre ne possède pas les styles WS_CAPTION ou WS_CHILD.

Chaque fois que la fenêtre de premier plan change, le shell vérifie les bits de style de la fenêtre pour déterminer si le bouton OK doit apparaître dans la barre des tâches. Le bouton OK est prioritaire sur une barre de menu ajoutée à la barre des tâches.

+0

Cela a été très utile, merci. J'ai trouvé des résultats différents en ce qui concerne l'événement de peinture. Si je l'ai ajouté dans le gestionnaire de peinture, l'application semblerait coincer dans une boucle lors de l'affichage comme si l'appel déclenchait une autre peinture, ce qui provoquait un autre appel, etc. L'ajout de l'appel dans l'événement de chargement de formulaires fonctionnait comme un charme sur les deux plates-formes. – ZippyBurger