IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment faire un message loop en c# ?


Sujet :

C#

  1. #1
    Battosaiii
    Invité(e)
    Par défaut Comment faire un message loop en c# ?
    Bonjour,
    Comment faire un message loop en c# equivalent au code ci dessous ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    int main()
    {
    //some code
    	while (m_pCabinetSelectionDlg->IsWindowVisible()) {
    		Sleep(100);
    		m_pCabinetSelectionDlg->PumpMessages();
    	}
    //some code
    }
    void CCabinetSelectionDlg::PumpMessages()
    {
        ASSERT(m_hWnd!=NULL);
        MSG msg;
        while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
          if(!IsDialogMessage(&msg))
          {
            TranslateMessage(&msg);
            DispatchMessage(&msg);  
          }
        }
    }

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    Je te repose la même question que celle concernant les forms modales sans showdialog : pourquoi vouloir faire cela ?

    dans la mesure où la pompe de message est parfaitement intégrée au framework, pourquoi veux tu passer par là ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Application.Run démarre une boucle de message sur le thread courant

    C'est d'ailleurs ce qu'on trouve dans la méthode Main de n'importe quel programme Windows Forms...

  4. #4
    Battosaiii
    Invité(e)
    Par défaut
    Merci des reponses. Je vais tenter d'expliquer un peu mon probleme.
    Le probleme avec ShowDialog c'est que lorsque qu'on clique cancel la fenetre se ferme et toutes les informations de cette fenetre sont perdu.

    Or malheureusement cette fenetre(ou window form) est connecte a une database(via a un COM component). Je sais que c'est pas propre de coupler la databse a l'interface graphique mais je n'ai pas le choix a cause du code de notre vieille application.

    Je veux trouver une alternative a ShowDialog de facon a ce que meme lorsque l'utilisateur clique cancel l'interface graphique est toujours la mais cacher. L'interface graphique de cette facon reste connecte a la databse. Le second probleme c'est qu'on veut que toutes les fenetres soient en mode modal meme les windows de type win32 invoke depuis certains COM component.

    Est ce que ca explique vos interrogations ? Voila pourquoi je cherche une alternative a SHowDialog.
    Dernière modification par Battosaiii ; 25/08/2009 à 12h56.

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Citation Envoyé par Battosaiii Voir le message
    Le probleme avec ShowDialog c'est que lorsque qu'on clique cancel la fenetre se ferme et toutes les informations de cette fenetre sont perdu.

    [...]

    Je veux trouver une alternative a ShowDialog de facon a ce que meme lorsque l'utilisateur clique cancel l'interface graphique est toujours la mais cacher.

    [...]
    C'est le cas. Une fenêtre affichée avec ShowDialog "existe" toujours, même après sa fermeture. Bien entendu, si elle est initialisée dans un bloc using et que le code sort de ce bloc après la fermeture de la-dite fenêtre, elle va être disposed mais sinon, il n'y a pas de raison...

  6. #6
    Battosaiii
    Invité(e)
    Par défaut
    Salut,
    Oui tu as raison la fenetre n'est pas detruite. Ma solution actuelle utilise ShowDialog mais j'ai un autre problemem ensuite.
    Le probleme c'est que je veux lancer une autre fenetre win32 apres que l'utilisateur click OK sur mon winform. Malheureusement il y a des problemems visuelles a partir de la.Non seulement on voit un flash a l'ecran a cause de la fonction hide() mais en plus la nouvelle fenetre ouverte est independante de internet explorer. Je voudrais que la nouvelle fenetre soit toujours en mode modal.L'utilisateur peut minimiser la nouvelle window. Cela je ne le veux pas.

    Lorsque mon winform est mode Showdialog et que l'utilisateur click ok le code suivant est active :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    onClickOK(//..event input here)
    {  
        this.Hide();//TO REVISIT
     
     
          if (!DoProperties())
          {
               return;
          }
     
     
           this.Close(); //TO REVISIT
    }
     
    void DoProperties()
    {
    ApiProperty property = new ApiProperty();
    property.ShowPropertyDialog();
    }
    ApiProperty est un COM component qui contient window dialog utilisant MFC library C++ de mixrosoft.
    ShowPropertyDialog() va afficher une nouvelle window32 independante de internet explorer. C'est cela que je ne veux pas.

    Hide() envoit un flash a l'ecran et en plus cache internet explorer pendant un moment. Ce n'est pas grave en soit . C'est un probleme visuel. Ca ne fiat pas tres propre. C'est pourquoi je ne veux pas utiliser ShowDialog.

    Avez vous compris le probleme entier ?

  7. #7
    Battosaiii
    Invité(e)
    Par défaut
    Est ce que j'ai mal expliquer le probleme ?

Discussions similaires

  1. [XL-2007] Comment faire un message d'attente durant la mise à jour de ma macro ?
    Par Debutant10 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/05/2012, 21h34
  2. Réponses: 9
    Dernier message: 10/05/2010, 20h28
  3. comment faire des messages d'errer en builder
    Par bracket dans le forum C++Builder
    Réponses: 1
    Dernier message: 26/04/2008, 14h43
  4. [VB.NET] comment faire un message d'attente
    Par hellosct1 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/09/2006, 17h43
  5. comment faire un message de type "alert" en java
    Par fracam dans le forum Composants
    Réponses: 4
    Dernier message: 05/12/2005, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo