Question

Comment puis-je détecter quand mon application .NET Compact est intelligente réduit au minimum (intelligent minimiser ce qui se passe lorsque l'utilisateur clique sur le bouton « X » dans le coin en haut à droite sur un Pocket PC)?

L'événement de désactivation ne sont pas dans le bon sens, car elle se produit dans des circonstances autres que la minimisation, par exemple quand une boîte de message ou d'une autre forme est représentée sur le dessus de la forme principale. Et WindowState ne permet pas de la forme, car il n'y a pas « minimisés » WindowState sur CF .NET.

J'ai entendu que par la mise en MinimizeBox = false, mon application sera fermé au lieu de réduire au minimum. Mais je ne veux pas vraiment mon application pour fermer, je veux juste savoir quand il a été réduit au minimum.

Était-ce utile?

La solution

Je pense que la voie à suivre ici est en train de traiter WM_ACTIVE message, puis vérifier si le paramètre fMinimized est pas nul. Vous pouvez trouver plus d'informations sur la façon de déclarer ces messages dans votre code ici .

Je vais essayer de savoir comment coder exactement cela en C # et prouver l'hypothèse. Cependant, vous peut-être plus vite que moi et le comprendre.

Vérifiez également les fonctions DefWindowProc et WindowProc , qui sont utilisés pour traiter les messages. Les fonctions sont déclarées dans votre code comme ceci:

d'abord include:

using System.Runtime.InteropServices;

puis dans la classe déclarer comme ceci

[DllImport("coredll.dll")]
static extern IntPtr DefWindowProc(IntPtr hWnd, uint uMsg, UIntPtr wParam,
   IntPtr lParam);

Il y a une autre chose que vous pourriez faire, ce qui est plus une solution « philosophique ». INMO la smart minimiser X est source de confusion pour les utilisateurs, c'est pourquoi je n'aime pas inclure. Au lieu de cela que je fournis un bouton dans le coin inférieur droit de la forme qui dit « proche » ou « retour », qui utilise la méthode proche de la forme. Je l'ai utilisé dans toutes les formes de garder une norme. Cela est moins ambigu pour les utilisateurs de Windows, car ils peuvent supposer que le X dans Windows Mobile est le même X dans Windows pour PC.

Si pour une raison quelconque, vous devez réduire votre application ou l'envoyer à l'arrière-plan utiliser le code suivant:

using System.Runtime.InteropServices;
...

public partial class Main : Form
{
   public Main()
    {


        InitializeComponent();
    }

  [DllImport("coredll.dll")]
    static extern int ShowWindow(IntPtr hWnd, int nCmdShow);

  const int SW_MINIMIZED = 6;

  ...
  ...

   public void HideForm()
    {
        ShowWindow(this.Handle, SW_MINIMIZED);
    }
} 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top