Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Frederic Lachasse
"chriss" wrote in message news:bpkmip$dbk$
Bonjour tout le monde,
Avant tout je vous previens que je fais du python qui utilise des fonctions C++ mais le probleme est bien un probleme de programmation windows en c++.
Je vous previens aussi que je n'ai aucune connaissance en programmation windows et que je n'ai pas trouvé de reponse sur le web a ce probleme.
Voici le probleme:
J'ai un programme 'toto' qui lance plusieurs thread (appellons les A, B et C) dont un (le B) qui est chargé de l'affichage d'une fenetre windows.
Le thread B boucle sur la fonction PumpMessages() qui recupere tous les messages windows et se termine dans le cas d'un message WM_QUIT.
A un moment donné je veux arreter le thread B (et donc fermer la fenetre) a partir de C (qui a evidemment un lien sur B).
Donc depuis C j'appelle une fonction destroy ( C.destroy())
et cette fonction destroy contient un appelle a la fonction de l'API WIN32 DestroyWindow.
Et bien ca marche pas. Mon retour (python): pywintypes.error (0, 'DestroyWindow', 'No error message is available')
Ou est le hic?
Dans la doc MSDN sur DestroyWindow(), il y a la remarque: Un thread ne peut pas utiliser DestroyWindow() pour détruire une fenêtre créée par un autre thread (...)
J'ai aussi essayé d'appeller la fonction PostQuitMessage(0) mais dans ce cas il ne se passe rien.
PostQuitMessage fait le post du message WM_QUIT au thread courrant, pas aux autres thread...
Merci par avance de vos nombreuses reponses!
Essaye: PostMessage(hwnd, WM_QUIT, 0, 0);
En effet, PostMessage envoi toujours les messages au thread de la fenêtre, même si la fonction est appelé depuis un autre thread.
Si tu connaît le thread ID, tu peux aussi utiliser PostThreadMessage().
-- Frédéric Lachasse -
"chriss" <cleroy@saros.fr> wrote in message
news:bpkmip$dbk$1@news.mc2.net...
Bonjour tout le monde,
Avant tout je vous previens que je fais du python qui utilise des
fonctions C++ mais le probleme est bien un probleme de programmation
windows en c++.
Je vous previens aussi que je n'ai aucune connaissance en programmation
windows et que je n'ai pas trouvé de reponse sur le web a ce probleme.
Voici le probleme:
J'ai un programme 'toto' qui lance plusieurs thread (appellons les A, B
et C) dont un (le B) qui est chargé de l'affichage d'une fenetre windows.
Le thread B boucle sur la fonction PumpMessages() qui recupere tous les
messages windows et se termine dans le cas d'un message WM_QUIT.
A un moment donné je veux arreter le thread B (et donc fermer la
fenetre) a partir de C (qui a evidemment un lien sur B).
Donc depuis C j'appelle une fonction destroy ( C.destroy())
et cette fonction destroy contient un appelle a la fonction de l'API
WIN32 DestroyWindow.
Et bien ca marche pas. Mon retour (python):
pywintypes.error
(0, 'DestroyWindow', 'No error message is available')
Ou est le hic?
Dans la doc MSDN sur DestroyWindow(), il y a la remarque: Un thread ne peut
pas utiliser DestroyWindow() pour détruire une fenêtre créée par un autre
thread (...)
J'ai aussi essayé d'appeller la fonction PostQuitMessage(0) mais dans ce
cas il ne se passe rien.
PostQuitMessage fait le post du message WM_QUIT au thread courrant, pas aux
autres thread...
Merci par avance de vos nombreuses reponses!
Essaye:
PostMessage(hwnd, WM_QUIT, 0, 0);
En effet, PostMessage envoi toujours les messages au thread de la fenêtre,
même si la fonction est appelé depuis un autre thread.
Si tu connaît le thread ID, tu peux aussi utiliser PostThreadMessage().
Avant tout je vous previens que je fais du python qui utilise des fonctions C++ mais le probleme est bien un probleme de programmation windows en c++.
Je vous previens aussi que je n'ai aucune connaissance en programmation windows et que je n'ai pas trouvé de reponse sur le web a ce probleme.
Voici le probleme:
J'ai un programme 'toto' qui lance plusieurs thread (appellons les A, B et C) dont un (le B) qui est chargé de l'affichage d'une fenetre windows.
Le thread B boucle sur la fonction PumpMessages() qui recupere tous les messages windows et se termine dans le cas d'un message WM_QUIT.
A un moment donné je veux arreter le thread B (et donc fermer la fenetre) a partir de C (qui a evidemment un lien sur B).
Donc depuis C j'appelle une fonction destroy ( C.destroy())
et cette fonction destroy contient un appelle a la fonction de l'API WIN32 DestroyWindow.
Et bien ca marche pas. Mon retour (python): pywintypes.error (0, 'DestroyWindow', 'No error message is available')
Ou est le hic?
Dans la doc MSDN sur DestroyWindow(), il y a la remarque: Un thread ne peut pas utiliser DestroyWindow() pour détruire une fenêtre créée par un autre thread (...)
J'ai aussi essayé d'appeller la fonction PostQuitMessage(0) mais dans ce cas il ne se passe rien.
PostQuitMessage fait le post du message WM_QUIT au thread courrant, pas aux autres thread...
Merci par avance de vos nombreuses reponses!
Essaye: PostMessage(hwnd, WM_QUIT, 0, 0);
En effet, PostMessage envoi toujours les messages au thread de la fenêtre, même si la fonction est appelé depuis un autre thread.
Si tu connaît le thread ID, tu peux aussi utiliser PostThreadMessage().
-- Frédéric Lachasse -
Vincent Burel
"Frederic Lachasse" wrote in message news:84xvb.1350$
"chriss" wrote in message news:bpkmip$dbk$ > Bonjour tout le monde, > > Avant tout je vous previens que je fais du python qui utilise des > fonctions C++ mais le probleme est bien un probleme de programmation > windows en c++. > > Je vous previens aussi que je n'ai aucune connaissance en programmation > windows et que je n'ai pas trouvé de reponse sur le web a ce probleme. > > Voici le probleme: > > J'ai un programme 'toto' qui lance plusieurs thread (appellons les A, B > et C) dont un (le B) qui est chargé de l'affichage d'une fenetre
windows.
> > Le thread B boucle sur la fonction PumpMessages() qui recupere tous les > messages windows et se termine dans le cas d'un message WM_QUIT. > > A un moment donné je veux arreter le thread B (et donc fermer la > fenetre) a partir de C (qui a evidemment un lien sur B). > > Donc depuis C j'appelle une fonction destroy ( C.destroy()) > > et cette fonction destroy contient un appelle a la fonction de l'API > WIN32 DestroyWindow. > > Et bien ca marche pas. Mon retour (python): > pywintypes.error > (0, 'DestroyWindow', 'No error message is available') > > Ou est le hic?
Dans la doc MSDN sur DestroyWindow(), il y a la remarque: Un thread ne
peut
pas utiliser DestroyWindow() pour détruire une fenêtre créée par un autre thread (...)
> J'ai aussi essayé d'appeller la fonction PostQuitMessage(0) mais dans ce > cas il ne se passe rien.
PostQuitMessage fait le post du message WM_QUIT au thread courrant, pas
aux
autres thread...
> Merci par avance de vos nombreuses reponses!
Essaye: PostMessage(hwnd, WM_QUIT, 0, 0);
vaut peut-être mieux faire un PostMessage(hwnd, WM_CLOSE, 0, 0);
et laisser la fenêtre faire son PostQuitMessage, histoire qu'elle se ferme correctement (éventuelles désallocations et destructions diverses)
Vincent Burel.
"Frederic Lachasse" <frederic.lachasse@verizon.net> wrote in message
news:84xvb.1350$yy5.588@nwrdny01.gnilink.net...
"chriss" <cleroy@saros.fr> wrote in message
news:bpkmip$dbk$1@news.mc2.net...
> Bonjour tout le monde,
>
> Avant tout je vous previens que je fais du python qui utilise des
> fonctions C++ mais le probleme est bien un probleme de programmation
> windows en c++.
>
> Je vous previens aussi que je n'ai aucune connaissance en programmation
> windows et que je n'ai pas trouvé de reponse sur le web a ce probleme.
>
> Voici le probleme:
>
> J'ai un programme 'toto' qui lance plusieurs thread (appellons les A, B
> et C) dont un (le B) qui est chargé de l'affichage d'une fenetre
windows.
>
> Le thread B boucle sur la fonction PumpMessages() qui recupere tous les
> messages windows et se termine dans le cas d'un message WM_QUIT.
>
> A un moment donné je veux arreter le thread B (et donc fermer la
> fenetre) a partir de C (qui a evidemment un lien sur B).
>
> Donc depuis C j'appelle une fonction destroy ( C.destroy())
>
> et cette fonction destroy contient un appelle a la fonction de l'API
> WIN32 DestroyWindow.
>
> Et bien ca marche pas. Mon retour (python):
> pywintypes.error
> (0, 'DestroyWindow', 'No error message is available')
>
> Ou est le hic?
Dans la doc MSDN sur DestroyWindow(), il y a la remarque: Un thread ne
peut
pas utiliser DestroyWindow() pour détruire une fenêtre créée par un autre
thread (...)
> J'ai aussi essayé d'appeller la fonction PostQuitMessage(0) mais dans ce
> cas il ne se passe rien.
PostQuitMessage fait le post du message WM_QUIT au thread courrant, pas
aux
autres thread...
> Merci par avance de vos nombreuses reponses!
Essaye:
PostMessage(hwnd, WM_QUIT, 0, 0);
vaut peut-être mieux faire un
PostMessage(hwnd, WM_CLOSE, 0, 0);
et laisser la fenêtre faire son PostQuitMessage, histoire qu'elle se ferme
correctement (éventuelles désallocations et destructions diverses)
"Frederic Lachasse" wrote in message news:84xvb.1350$
"chriss" wrote in message news:bpkmip$dbk$ > Bonjour tout le monde, > > Avant tout je vous previens que je fais du python qui utilise des > fonctions C++ mais le probleme est bien un probleme de programmation > windows en c++. > > Je vous previens aussi que je n'ai aucune connaissance en programmation > windows et que je n'ai pas trouvé de reponse sur le web a ce probleme. > > Voici le probleme: > > J'ai un programme 'toto' qui lance plusieurs thread (appellons les A, B > et C) dont un (le B) qui est chargé de l'affichage d'une fenetre
windows.
> > Le thread B boucle sur la fonction PumpMessages() qui recupere tous les > messages windows et se termine dans le cas d'un message WM_QUIT. > > A un moment donné je veux arreter le thread B (et donc fermer la > fenetre) a partir de C (qui a evidemment un lien sur B). > > Donc depuis C j'appelle une fonction destroy ( C.destroy()) > > et cette fonction destroy contient un appelle a la fonction de l'API > WIN32 DestroyWindow. > > Et bien ca marche pas. Mon retour (python): > pywintypes.error > (0, 'DestroyWindow', 'No error message is available') > > Ou est le hic?
Dans la doc MSDN sur DestroyWindow(), il y a la remarque: Un thread ne
peut
pas utiliser DestroyWindow() pour détruire une fenêtre créée par un autre thread (...)
> J'ai aussi essayé d'appeller la fonction PostQuitMessage(0) mais dans ce > cas il ne se passe rien.
PostQuitMessage fait le post du message WM_QUIT au thread courrant, pas
aux
autres thread...
> Merci par avance de vos nombreuses reponses!
Essaye: PostMessage(hwnd, WM_QUIT, 0, 0);
vaut peut-être mieux faire un PostMessage(hwnd, WM_CLOSE, 0, 0);
et laisser la fenêtre faire son PostQuitMessage, histoire qu'elle se ferme correctement (éventuelles désallocations et destructions diverses)