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 :

Probl�mes de fonctions C++


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2020
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 25
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : F�vrier 2020
    Messages : 3
    Par d�faut Probl�mes de fonctions C++
    Bonjour � tous,
    J'ai cr�e un petit programme "blague" en C++ pour un ami qu'il pourra arr�ter gr�ce au gestionnaire des t�ches.
    Le code, le voici :
    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
    25
    26
    27
    #include <windows.h>
    int beep() {
          Beep(rand(), 200);
              Beep(1175, 1000);
                  Beep(1568, 200);
                      Beep(1568, 200);
                          Beep(1245, 1000);
                     Beep(1397, 200);
                  Beep(40101, 200);
               Beep(40101, 200);
        Beep(40101, 200);
    }
    int msgboxloop() {
    		MessageBoxW(NULL, L"Salut :D", L"Joke", MB_SYSTEMMODAL | MB_OK | MB_ICONWARNING);
    }
    int Cursorps() {
    POINT cursor;
    	   GetCursorPos(&cursor);
       SetCursorPos(cursor.x + (rand() % 3 - 1) * (rand() % (0 / 2200 + 2)), cursor.y + (rand() % 3 - 1) * (rand() % (0 / 2200 + 2)));
    }
      int main() {
            while(1) {
    	           beep();
    	        msgboxloop();
    	     Cursorps();
         }
    }
    Il fonctionne mais il y a juste un petit probl�me : la fonction "cursorps()" (qui d�place le curseur de mani�re al�atoire � l'�cran) ne fonctionne pas � chaque fois que j'execute
    le programme :/ et lorsque je mets une boucle "while" de niveau 1 au niveau de cette fonction : <code>
    les autres fonctions "Beep()" et "Msgboxloop()" se retrouvent bloqu�es.
    Comment faire pour la fonction "cursorps()" s'�x�cute � l'infinie avec les autres fonctions sans bloquer le reste du programme ?
    Merci de vos r�ponses !

  2. #2
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur
    Inscrit en
    Ao�t 2011
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 71
    Par d�faut
    Bien que je trouve cette blague de mauvais gout, tu peux utiliser std::async ou std::thread (recommand�).
    Sinon en API windows il y a CreateThread() (c'est du C donc).

  3. #3
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    Citation Envoy� par pjlan Voir le message
    Sinon en API windows il y a CreateThread() (c'est du C donc).
    Depuis Vista il y a les condition variables (<- lien officiel en anglais)

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Sinon, une pompe � message, c'est pas fait pour faire "jolie".

  5. #5
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2020
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 25
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : F�vrier 2020
    Messages : 3
    Par d�faut
    Citation Envoy� par pjlan Voir le message
    Bien que je trouve cette blague de mauvais gout, tu peux utiliser std::async ou std::thread (recommand�).
    Sinon en API windows il y a CreateThread() (c'est du C donc).
    Merci de ta r�ponse ! :)
    D�sol� de t'emb�ter encore mais...Au niveau de mon code �a donnerais quoi ?

  6. #6
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur
    Inscrit en
    Ao�t 2011
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 71
    Par d�faut
    Si j'ai bien compris c'est les MessageBox qui bloquent ?
    l'id�e est donc de cr�er un thread pour le d�placement du curseur du coup ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    #include <thread>
    std::thread th(Cursorps);
    Par contre dans Cursorps() il faut refaire une boucle infinie.

  7. #7
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    La biblioth�que graphique Win32 n'est pas multi-thread safe.
    Vous allez directement dans le mur !!!

  8. #8
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur
    Inscrit en
    Ao�t 2011
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 71
    Par d�faut
    Autant pour moi je la connais mal (mais c'est vrai que c'�tait assez �vident)
    Dans ce cas effectivement �a va planter a tout va :d

  9. #9
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2020
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 25
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : F�vrier 2020
    Messages : 3
    Par d�faut
    Citation Envoy� par pjlan Voir le message
    Si j'ai bien compris c'est les MessageBox qui bloquent ?
    l'id�e est donc de cr�er un thread pour le d�placement du curseur du coup ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    #include <thread>
    std::thread th(Cursorps);
    Par contre dans Cursorps() il faut refaire une boucle infinie.
    D'accord je mets �a dans mon main.
    Deux derni�res petites choses, est-ce qu'il y a un moyen de stopper ce thread ou de le relancer � mon aise ?
    Avec la fonction "CreateThread" en C, qu'est-ce que �a pourrait donner ?
    Merci pour ton aide

  10. #10
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur
    Inscrit en
    Ao�t 2011
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 71
    Par d�faut
    CreateThread ne va pas r�soudre le probl�me mentionn� par bacelar (je t'invite � prendre en compte les remarques des autres personnes) et honn�tement c'est plus compliqu� � utiliser.

    la doc est ici => https://docs.microsoft.com/en-us/win...i-createthread
    L'appel doit ressembler � �a pour un appel 'standard' (non-test�) d'apr�s ce que je lis sur la doc
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    DWORD id;
    CreateThread(NULL,0,Cursorps,NULL,0,&id);
    et la fonction Cursorps doit respecter ce prototype
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    DWORD Cursorps(void* data);

  11. #11
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Tant que vous court-circuitez la gestion standard des fen�tres, en ne faisant pas de pompe � message, vous allez dans le mur.

  12. #12
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur
    Inscrit en
    Ao�t 2011
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 71
    Par d�faut
    Pour info, Bacelar parle de la boucle des messages qui doit ressembler � �a:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
         TranslateMessage(&msg);
         DispatchMessage(&msg);
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. C++ Probl�me de fonctions et pointeurs
    Par zmatz dans le forum C++
    R�ponses: 3
    Dernier message: 01/10/2005, 16h20
  2. [MFC][WINSOCK] Probl�me avec fonction recv
    Par Le Farfadet dans le forum MFC
    R�ponses: 4
    Dernier message: 23/09/2005, 11h00
  3. Probl�me de fonction
    Par Anduriel dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 26/05/2005, 20h30
  4. Probl�me avec fonction d'envoie de mail
    Par zyg dans le forum R�seau/Web
    R�ponses: 1
    Dernier message: 23/02/2005, 08h48
  5. [Requ�te] Probl�me avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requ�tes
    R�ponses: 4
    Dernier message: 11/01/2005, 21h52

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