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

MFC Discussion :

Curseur en mode wait sur tout un dialogue


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 91
    Par défaut Curseur en mode wait sur tout un dialogue
    Bonjour bonjour.

    Je viens vous voir car j'ai un petit soucis de curseur. En effet j'aimerai tout bettement que mon curseur passe ne sablier durant une partir de l'execution de mon programme.

    Pour se faire, j'ai intercpter les mouvements de la sourie et a l'aide d'une variable globales je la met a WAIT ou NON. Seulement des que je passe sur un des controle genre CListBox ou alors tout betement un CButton et la ca ne marche pas car logiquement je ne passe pas dans mon OnMouseMove...

    Je pense qu'il doit y avoir une solution simple(autre que rederiver toute les classes des boutons...) mais que je passe a coté.

    Je vous met mon OnMouseMove au cas ou.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void XXXX::OnMouseMove(UINT nFlags, CPoint point) 
    {
    	if(mWaitCursor)
    	{
    		// curseur en attente
    		SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
    	}
     
    	CDialog::OnMouseMove(nFlags, point);
    }
    Merci d'avance
    poseidon2

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut
    il est plus simple d'utiliser BeginWaitCursor():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void CMyView::OnSomeCommand() 
    {    
              BeginWaitCursor(); // Display the hourglass cursor.     
     
             // Do some lengthy processing.     
     
             EndWaitCursor(); // Remove the hourglass cursor. 
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 91
    Par défaut
    Ca a malheureusement pas l'air de marcher. C'est un CDialogue que j'utilise

    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
    void ClRcpScnEx::OnExporter() 
    {
        CFile batchFile;
        CString strBatchName = _T("");
        CString strCmd = _T("");
        char    cLF = 0x0A; // Line feed
        char    cCR = 0x0D; // Carriage return
        int i, lReturn, lRes;
        FILE *fo=NULL;
     
        // Variable necessaire a la recopie de scenario
        long hFile;
        char lFichier[MAX_BUF] ;
        SruString lBaseName;
        CString     lTemp = _T("");
        unsigned long ulFreeSpace = 0, ulNeededSpace = 0;
     
        // Curseur  en mode attente
        BeginWaitCursor();
    ------------
            EndWaitCursor();
    }
    Et ca ca marche pas

  4. #4
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Chez moi ça fonctionne.

    Peut-être que le code entre BeginWaitCursor et EndWaitCursor est exécuté trop rapidement?
    Je viens de tester avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BeginWaitCursor();
    int i = 1;
    while (i);
    EndWaitCursor();
    Et ça fonctionne à merveille.

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    (salut r0d ,)

    si ton code comporte une boucle il faut rajouter une pompe a messages
    voir faq:
    http://c.developpez.com/faq/vc/?page...rk#PumpMessage

    si le code est trop rapide il est possible que l'on ne voir rien...

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Utiliser la classe CWaitCursor n'est-t-il pas plus simple et plus sûr que ces fonctions?
    (à moins que cela nécessite une version trop récente de MFC ?)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Utilisation du mode Wait For Interrupt sur STM8L151G6
    Par wiloui dans le forum Embarqué
    Réponses: 2
    Dernier message: 27/06/2014, 20h02
  2. [Lazarus] Changer de curseur sur toute la Form
    Par TomErra dans le forum Lazarus
    Réponses: 3
    Dernier message: 12/03/2011, 22h38
  3. Comment mettre le curseur d'un Memo sur le Canvas d'une Form ?
    Par julie20 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/08/2003, 13h24
  4. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  5. Masquer le curseur en mode MS-DOS
    Par Alex120 dans le forum C
    Réponses: 2
    Dernier message: 10/07/2002, 09h30

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