2008-10-28 7 views
1

Je dois créer une boîte de dialogue d'état pour une application Windows Mobile (C# 2.0) qui doit être mise à jour, afin que MessageBox soit désactivé. J'ai essayé de simplement créer une nouvelle classe Form, de changer la taille et d'appeler ShowDialog, mais cela arrive toujours en plein écran (moins la barre de titre bien sûr). La seule façon que je pourrais comprendre comment l'afficher petit est de mettre FormBorderStyle à None, mais alors il n'a vraiment aucune bordure ou barre de titre du tout! Je veux qu'il ressemble toujours à une boîte de message (avec la barre de titre et les frontières), mais j'ai besoin d'utiliser un formulaire pour pouvoir le mettre à jour.Formulaire d'affichage non maximisé avec des bordures sur Windows Mobile

Une idée de comment faire cela?

+0

Juste une idée à quelqu'un ayant des problèmes similaires: envisager d'utiliser une solution de non-dialogue. Comme une barre de progression sur l'application elle-même. –

Répondre

2

Le défi ici est le shell WinMo lui-même. Ce qui n'est pas apparent, c'est que la légende sur le formulaire (en haut de l'écran) n'est pas la légende du formulaire que vous voyez - c'est une application complètement différente. Donc, pour que votre formulaire «flotte», il faut subvertir la façon dont le shell gère l'affichage du formulaire. Un moyen rapide et sale est de définir le BorderStyle Form à aucun, mais vous perdez votre barre de légende. Une option est alors de le dessiner manuellement avec FillRect et DrawString dans OnPaint. Pas trop difficile et ne nécessite pas de manigances P/Invoke, mais cela nécessite de prendre en compte le nouvel en-tête lors de la mise en page de vos contrôles.

Une autre option consiste à utiliser P/Invoke et à manipuler vous-même les bits de style du formulaire. Cela fonctionne bien, mais veillez à le faire au bon endroit dans le code, car certains bits doivent être définis lors de la création de la fenêtre. Méfiez-vous également de la coquille, car elle pourrait vouloir changer les bits sur vous - donc ce mécanisme nécessite plus de tests et d'attention aux détails. OMI c'est un meilleur itinéraire, et j'ai blogged about it in more detail here. Cette entrée de blog n'est pas spécifiquement sur les formes flottantes, mais elle couvre bien la manipulation de style. Pour plus d'informations sur les formulaires non en plein écran, voir my other blog entry here.