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

SDL Discussion :

Maintenir bouton gauche de la souris sans mouvement


Sujet :

SDL

  1. #1
    Membre du Club Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Points : 52
    Points
    52
    Par défaut Maintenir bouton gauche de la souris sans mouvement
    Bonjour à tous,
    Je souhaiterais savoir s'il est normal que quand l'on maintient le bouton gauche de la souris enfoncé, sans pour autant bouger la souris, aucun n'évènement ne soit généré ?

    Pour être plus précis :
    J'essaie de mettre au point un jeu de tire au pigeon. Pour un peu plus de réalisme, je fais en sorte que si l'utilisateur garde le bouton gauche de la souris enfoncé, les tirs sont continus (mitraillette). Cependant cela ne semble que marché si l'on bouge le curseur de la souris tout en maintenant le bouton enfoncé.
    Voici le code de la boucle principale du programme, si ça peut en éclairer certains.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    void mainLoop()
    {
        bool quit = false, pressed = false ;
        SDL_Event event ;
        int i ;
        Uint32 lastShot = 0, delai = 175 ;
        Uint8 r = 0,g = 0, b = 0 ;
     
        while(!quit)
        {
            SDL_WaitEvent(&event) ;
            int indImp = hasard() ; //Indice du type d'impact
            switch(event.type)
            {
                case SDL_QUIT :
                    quit = true ;
                break ;
                case SDL_KEYDOWN :
                    switch(event.key.keysym.sym)
                    {
                        case SDLK_ESCAPE :
                            quit = true ;
                        break ;
                        case SDLK_DELETE :
                            for(i=0;i<ind_cour;i++)
                            {
                                tabImpact[i].pos.x = -1 ;
                                tabImpact[i].pos.y = -1 ;
                            }
                            ind_cour = 0 ;
                        break ;
                    }
                break ;
                case SDL_MOUSEMOTION :
                    viseur.pos.x = event.button.x - viseur.img->w/2 ;
                    viseur.pos.y = event.button.y - viseur.img->h/2 ;
                break ;
                case SDL_MOUSEBUTTONDOWN :
                    if(event.button.button == SDL_BUTTON_LEFT)
                        pressed = true ;
                break ;
                case SDL_MOUSEBUTTONUP :
                    if(event.button.button == SDL_BUTTON_LEFT)
                        pressed = false ;
                break ;
            }
     
            SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,255,255,255)) ;
     
            //On blit toute les surfaces
            for(i=0;i<NB_PROF;i++)
                SDL_BlitSurface(tabProf[i].img,NULL,ecran,&tabProf[i].pos) ;
     
            if(pressed)
            {
                bool estBlanc = true ;
                if(ind_cour < NB_IMP)
                {
                        //On parcours le tableau des faces pour voire laquel a été touchée
                       if((SDL_GetTicks() - lastShot) > delai)
                       {
                            SDL_GetRGB(*((Uint32*)(ecran->pixels) + event.button.x + event.button.y*ecran->w),ecran->format,&r,&g,&b) ;
                            estBlanc = (r == 255) && (g == 255) && (b == 255) ;    
                            //On test si le clic est effectue sur la zone d'une surface ou pas
                            if(!estBlanc) 
                            {
                                FSOUND_PlaySound(FSOUND_FREE, shot) ;
                                lastShot = SDL_GetTicks() ;
                                tabImpact[ind_cour].pos.x =  event.button.x - typeImp[indImp]->w/2 ;
                                tabImpact[ind_cour].pos.y = event.button.y - typeImp[indImp]->h/2 + 2 ;
                                tabImpact[ind_cour].img = typeImp[indImp] ;
                                ind_cour++ ;
                            }
                        }
                }
            }
     
            for(i=0;i<ind_cour;i++)
            {
                if(tabImpact[i].pos.x != -1)
                    SDL_BlitSurface(tabImpact[i].img,NULL,ecran,&tabImpact[i].pos) ;
            }
     
            SDL_BlitSurface(viseur.img,NULL,ecran,&viseur.pos) ;
     
            SDL_Flip(ecran) ;
        }
    }
    Merci d'avance pour vos réponse

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Sans voir tout le code qui fonctionne je ne pourrais pas aider plus que dire qu'il faut mieux utiliser SDL_PollEvent que SDL_WaitEvent.

    Mais ceci ne change en rien ton problème. Tu dis :

    Cependant cela ne semble que marché
    Soit cela marche, soit cela ne fonctionne pas. En utilisant un debugger, vérifies...

    Jc

  3. #3
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par fearyourself
    Sans voir tout le code qui fonctionne je ne pourrais pas aider plus que dire qu'il faut mieux utiliser SDL_PollEvent que SDL_WaitEvent.
    Je pense que c'est bien ça le problème : avec SDL_WaitEvent le programme est stoppé tant qu'il n'y a pas d'événement... Si le bouton de la souris n'est pas relâché, que la souris n'est pas déplacée, ou que le clavier n'est pas utilisé, le reste du code n'est pas appelé (et notamment l'écran n'est pas rafraîchi)...

  4. #4
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Eusebe
    Je pense que c'est bien ça le problème : avec SDL_WaitEvent le programme est stoppé tant qu'il n'y a pas d'événement... Si le bouton de la souris n'est pas relâché, que la souris n'est pas déplacée, ou que le clavier n'est pas utilisé, le reste du code n'est pas appelé (et notamment l'écran n'est pas rafraîchi)...
    Certes, mais lorsqu'un bouton est cliqué, un événement de type SDL_MOUSEBUTTONDOWN devrait se déclenché et ceci avec SDL_WaitEvent

    Jc

  5. #5
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par fearyourself
    Certes, mais lorsqu'un bouton est cliqué, un événement de type SDL_MOUSEBUTTONDOWN devrait se déclenché et ceci avec SDL_WaitEvent
    Oui, mais le problème arrive d'après ce que j'ai compris quand le bouton de la souris reste enfoncé. Dans ce cas, il y a eu un événement (quand on a enfoncé le bouton), ce qui doit entraîner l'apparition d'une marque sur l'écran et un son (je suppose), puis après plus rien (alors que MPKA aimerait que le son soit joué).

  6. #6
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Eusebe
    Oui, mais le problème arrive d'après ce que j'ai compris quand le bouton de la souris reste enfoncé. Dans ce cas, il y a eu un événement (quand on a enfoncé le bouton), ce qui doit entraîner l'apparition d'une marque sur l'écran et un son (je suppose), puis après plus rien (alors que MPKA aimerait que le son soit joué).
    Wow, j'ai préparé un grand texte pour expliquer mon point de vue et j'ai regardé une dernière fois le code...

    C'est en effet SDL_WaitEvent qui pose problème puisqu'il met l'application en attente pour le prochain événement... Si tu ne bouges pas la souris tu n'as pas d'événements, donc tu n'affiches plus la scéne ni ne gére la création des balles...

    Il faut donc utiliser SDL_PollEvent...

    Citation Envoyé par Eusebe
    Je pense que c'est bien ça le problème : avec SDL_WaitEvent le programme est stoppé tant qu'il n'y a pas d'événement... Si le bouton de la souris n'est pas relâché, que la souris n'est pas déplacée, ou que le clavier n'est pas utilisé, le reste du code n'est pas appelé (et notamment l'écran n'est pas rafraîchi)...
    J'ai rien dit... J'avais compris la phrase d'une autre façon...

    Jc

  7. #7
    Membre du Club Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Points : 52
    Points
    52
    Par défaut
    Merci à tous les 2 pour vos réponses.

    Est ce que quelqu'un pourrait pour conclure ce topic m'expliquer la différence entre WaitEvent et PollEvent.
    Je sais que l'une est bloquant et l'autre non, mais ça ne me parle pas plus que ça. J'ai utilisé WaitEvent, faute de bien comprende la différence entre ces 2 fonctions.

    Edit : En tout cas merci, ça résoud parfaitement mon problème

  8. #8
    mat.M
    Invité(e)
    Par défaut
    Comme FearyYourself il faut de préférence utiliser PollEvent sinon effectivement aucun message n'est transmis au programme.
    WaitEvent comme son nom l'indique c'est l'attente d'un message que transmet l'OS au programme ( MOUSEMOTION etc..) donc bloquant.
    PollEvent met les messages dans une file d'attente

  9. #9
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par MPKA
    Merci à tous les 2 pour vos réponses.

    Est ce que quelqu'un pourrait pour conclure ce topic m'expliquer la différence en WaitEvent et PollEvent.
    Je sais que l'une est bloquant et l'autre non, mais ça ne me parle pas plus que ça. J'ai utilisé WaitEvent, faut de bien comprende la différence entre ces 2 fonctions.

    Edit : En tout cas merci, ça résoud parfaitement mon problème
    SDL_WaitEvent: met le programme en attente pour un événement, ie ton programme ne fait plus rien tant qu'un événement n'est pas arrivé (donc pas d'affichage, pas de gestion de création de balles/gestion de collision...)

    Rarement utilisé parce qu'arrêter un programme graphique n'est jamais une bonne idée...

    SDL_PollEvent : regarde s'il y a un message en attente et remplit la structure si c'est le cas. Retourne tout de suite 0 sinon, ie l'appel ne bloque pas le programme. Le programme peut donc continuer tranquillement son affichage/sa gestion de collisions/de création de balles et voir plus tard si on a un événement.

    Voir http://fearyourself.developpez.com/t.../morpion/part1 pour un exemple type de programme SDL utilisant SDL_PollEvent.

    Jc

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    J'ai pas trop d'expérience dans la création de jeux, mais j'aurais utilisé une solution tout autre.
    Déja je trouve pas normal que l'évènement key_down se redéclenche quand on bouge la souris, il ne devrait le faire que quand le bouton descend. Ensuite, j'aurais plutot fait gérer le tir par un booléen qui si il est à true lance des balles et si il est à false n'en lance pas. L'évènement key_down ferait passer le booléen à true et l'évènement key_up le ferait passer à false.
    Penser aussi à prévoir un mutex si threads il y a.

  11. #11
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par zais_ethael
    Déja je trouve pas normal que l'évènement key_down se redéclenche quand on bouge la souris, il ne devrait le faire que quand le bouton descend.
    Ben c'est pas ce qui se passe... C'est l'événement SDL_MOUSEMOTION qui se déclenche dans ce cas...

    Citation Envoyé par zais_ethael
    Ensuite, j'aurais plutot fait gérer le tir par un booléen qui si il est à true lance des balles et si il est à false n'en lance pas. L'évènement key_down ferait passer le booléen à true et l'évènement key_up le ferait passer à false.
    Il me semble que c'est ce qu'il fait non ?
    Citation Envoyé par MPKA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                case SDL_MOUSEBUTTONDOWN :
                    if(event.button.button == SDL_BUTTON_LEFT)
                        pressed = true ;
                break ;
                case SDL_MOUSEBUTTONUP :
                    if(event.button.button == SDL_BUTTON_LEFT)
                        pressed = false ;
                break ;

  12. #12
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par zais_ethael
    Déja je trouve pas normal que l'évènement key_down se redéclenche quand on bouge la souris, il ne devrait le faire que quand le bouton descend.
    C'est exact, personne ne disait que cet événement se redéclenchait... (enfin je crois ).
    Il disait que le fait que le bouton était appuyé n'était pris en compte que lorsque la souris bougeait...

    Ensuite, j'aurais plutot fait gérer le tir par un booléen qui si il est à true lance des balles et si il est à false n'en lance pas.
    Ben.... C'est le cas... Il ajoute simplement un timer pour tirer avec un intervalle...

    L'évènement key_down ferait passer le booléen à true et l'évènement key_up le ferait passer à false.
    C'est ce qui est fait.

    Penser aussi à prévoir un mutex si threads il y a.
    Pas forcément. Il faudrait voir si l'affectation d'un booléen n'est pas atomique.

    Jc

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Citation Envoyé par fearyourself
    Pas forcément. Il faudrait voir si l'affectation d'un booléen n'est pas atomique.
    Si il est placé en volatile je crois que oui, mais je me suis toujours un peu méfié de ca car je ne connais pas bien cette fonctionnalité.

    Pour tout le reste, honte sur moi parceque je n'ai pas pris le temps de lire le code

  14. #14
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par zais_ethael
    Si il est placé en volatile je crois que oui, mais je me suis toujours un peu méfié de ca car je ne connais pas bien cette fonctionnalité.

    Pour tout le reste, honte sur moi parceque je n'ai pas pris le temps de lire le code
    Le fait que la variable soit en volatile importe peu. Il y a deux optiques lorsqu'on traite avec les threads :

    - Soit on modifie la valeur et ce n'est pas grave si le programme se retrouve avec un état indéterminé

    - Soit on utilise des mutex pour s'assurer que cet état n'est pas possible

    Dans le cas d'un booléen pour savoir si le bouton est appuyé, cela ne changera pas grand chose qu'un thread est en train d'écrire pendant que l'autre lit. Au pire, il arrêtera de tirer ou il tirera une fois de trop. Mais à l'échelle humaine, je ne pense pas que cela aura une influence.

    Pour être sûr, je conseille bien sûr les mutex mais dans ce cas précis, je pense que c'est inutile... C'était là, le sens de ma remarque.

    Jc

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Même si ce n'est qu'un booléen, dans le principe il vaut mieux prévoir le programme pour. Mais est-ce que le mot clé volatile n'est pas sensé suffire? Ou alors j'ai jamais vraiment compris son utilité.

  16. #16
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par zais_ethael
    Même si ce n'est qu'un booléen, dans le principe il vaut mieux prévoir le programme pour. Mais est-ce que le mot clé volatile n'est pas sensé suffire? Ou alors j'ai jamais vraiment compris son utilité.
    volatile permet de dire au compilateur de vérifier la valeur à chaque passage du code. C'est généralement utilisé avec un pointeur et donc pour dire au compilateur qu'il faut regarder tout le temps ce qui se trouve dans la zone pointée (à la place d'optimiser le code)

    Bref, cela ne change pas le problème que lorsqu'il y aura une écriture non atomique, on pourrait avoir un problème.

    Jc

  17. #17
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par fearyourself
    volatile permet de dire au compilateur de vérifier la valeur à chaque passage du code. C'est généralement utilisé avec un pointeur et donc pour dire au compilateur qu'il faut regarder tout le temps ce qui se trouve dans la zone pointée (à la place d'optimiser le code)

    Bref, cela ne change pas le problème que lorsqu'il y aura une écriture non atomique, on pourrait avoir un problème.
    En même temps, est-ce que l'écriture d'un type de base peut-être réellement non atomique ?
    Je vois assez mal comment on peut n'enregistrer que la moitié d'un int, d'un char, d'un booléen... (mais il s'agit peut-être d'une fausse impression)

  18. #18
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Eusebe
    En même temps, est-ce que l'écriture d'un type de base peut-être réellement non atomique ?
    Je vois assez mal comment on peut n'enregistrer que la moitié d'un int, d'un char, d'un booléen... (mais il s'agit peut-être d'une fausse impression)
    Sur Itanium, l'écriture de 8 octets est atomique donc l'écriture de tout type qui prend plus de place (structure ou long double par exemple) n'est pas atomique.

    Jc

  19. #19
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par fearyourself
    Sur Itanium, l'écriture de 8 octets est atomique donc l'écriture de tout type qui prend plus de place (structure ou long double par exemple) n'est pas atomique.
    D'accord, mais je pensais plutôt à des mécanismes "thread-safe" du C++...
    Il n'y aurait pas de 'surcouche' ?

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Ben si, celle que tu peux faire toi même
    Il n'y même pas encore de bibliothèque standard pour les threads, faut pas espérer des mutexs embarqués pour les types primaires (quoi que ca pourrait venir avec la prochaine norme).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/04/2011, 22h09
  2. Réponses: 1
    Dernier message: 05/02/2009, 13h21
  3. [Débutant] Bouton gauche bouton droit de la souris
    Par pompier21 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 07/10/2008, 17h09
  4. [javascript]tester si le bouton gauche de la souris est enfoncé
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/04/2006, 16h34
  5. [JTextArea] bouton gauche souris
    Par let_me_in dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 05/01/2006, 18h48

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