Comment puis-je prendre une forme qui est actuellement minimisée et la restaurée à son état précédent. Je ne trouve aucun moyen de déterminer si son précédent windowstate code> était normal code> ou maximisé code>; Mais je sais que les informations doivent être stockées quelque part parce que Windows n'a pas de problème le faire avec des applications sur la barre des tâches. P>
4 Réponses :
SendMessage(form.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
Cela ne répond pas à sa question - il demande d'aller à la normale ou maximisée si le formulaire est actuellement minimisé ...
J'ai mis à jour ma réponse. J'ai mal compris la question.
C'est une solution beaucoup plus propre - très simple à mettre en œuvre.
Si vous souhaitez stocker l'état précédent chaque fois qu'il y a un changement (optimiser / minimiser), vous devez accroître l'événement code> SIZCHANGED >, selon Ce message sur MSDN . Vous pouvez obtenir le windowstate code> là et le stocker. P>
Il y a une meilleure option que de stocker cela vous-même. Il est déjà suivi par l'API Windows.
Il n'y a pas d'API gérée pour cela. La façon de le faire est d'utiliser Pinvoke getWindowPlacement et vérifier for Détails, voir cette Microsoft Comment (qui démontre la technique En VB). P> en C #, ce serait: p> wpf_restoretomaximized < /code >.
@Dan: Merci - j'ai corrigé les erreurs - (je tapais à la volée et copier à partir de Pinvoke.net, qui avait le problème Ref / Out ...)
@Dan: On dirait que cela a travaillé pour vous, au moins, au moins;)
Vous pouvez suivre les modifications de l'état de la fenêtre via l'événement de redimensionnement. Comme ceci:
Je ne vais pas gaspiller le temps de quelqu'un d'autre à essayer de faire revoir cela; Mais la duplicate présumée ne répond pas à ma question car sa réponse se restaurera toujours à la normale (ouverte mais non maximisée) toujours, y compris si la pré-minimisation était dans l'état maximisé.