Chriss a écrit :
 
 mais pourtant meme si c'est C qui appelle la fonction destroy() cette fonction est dans B.  
 
   | 
C c'est un thread ? B une classe ?
C'est pas tres clair entre tes threads et tes classes A, B, C.
J'ai l'impression que tu mélanges...
 
Chriss a écrit :
 
 En pseudo code:
   //classe qui affiche la fenetre
 class Window
 {      methode pumpMessage(){
      //cette methode attend un message WM_QUIT pour sortir de sa boucle
    }          methode destroy(){
      DestroyWindow()
    }
 }
      
 //classe d'ou on veut commander la fermeture de la fenetre
 // cree par B la classe ?
 class DestroyWindow
 {
   methode constructeur (instance de Window)
     win=instance de Window
     methode destroy()       fait win.destroy()
 }
   Donc meme si j'execute la methode destroy , je le fais depuis une instance de B. Donc le message WM_QUIT doit bien etre lancé au bon endroit.
 
   | 
L'important est de voir quel thread crée ta fenetre et quel thread veut la détruire. Si tu crées ta fenetre dans ton thread B et que tu appelles destroy() alors que c'est le thread C qui s'execute alors ca peut pas marcher.
 
Chriss a écrit :
 
 
 Ou est la page ou t'as trouve ton info "A thread cannot use DestroyWindow to destroy a window created by a different thread" ?  
 
   | 
dans la msdn. Si tu ne l'a pas http://msdn.microsoft.com/default.aspx