Accueil > Forum > > > > Thread +CreateDialog
Thread +CreateDialog
lundi 28 juillet 2003 à 12:03:57 |
Thread +CreateDialog

Manson
|
Bonjour, voila, je dois creer des fenetre a partir d'un thread. Le pb c'est que la fenetre ce cree bien mais on ne peut rien faire dedans, car il n'y a pas ca apres ca creation : while( GetMessage(&msg,NULL,0,0) ) { TranslateMessage(&msg); DispatchMessage(&msg); } Mais je ne veux pas rajouter ces lignes la car je dois garder la main dans mon thread, pour qu'il puisse creer d'autres fenetre. J'ai essaye d'attacher les msg de ce thread au thread principal avec AttachThreadInput, mais ca ne marche pas. Quelqu'un aurait une idee ? D'avance merci. Arno
|
|
lundi 28 juillet 2003 à 13:54:30 |
Re : Thread +CreateDialog

aardman
|
Salut, Si tu utilise CreateDialog c'est que tu fais une dialogbox non modale (qui retour le handle de la dialog tout de suite). Pas besoin de boucles de messages (car dialogbox), donc ca bloque pas le thread.
------------------------------- Réponse au message : -------------------------------
> Bonjour, > > voila, je dois creer des fenetre a partir d'un thread. > Le pb c'est que la fenetre ce cree bien mais on > ne peut rien faire dedans, car il n'y a pas ca apres > ca creation : > while( GetMessage(&msg,NULL,0,0) ) > { > TranslateMessage(&msg); > DispatchMessage(&msg); > } > > Mais je ne veux pas rajouter ces lignes la car je dois > garder la main dans mon thread, pour qu'il puisse > creer d'autres fenetre. > > J'ai essaye d'attacher les msg de ce thread au thread > principal avec AttachThreadInput, mais ca ne marche pas. > > Quelqu'un aurait une idee ? > > D'avance merci. > > Arno
|
|
lundi 28 juillet 2003 à 15:09:57 |
Re : Thread +CreateDialog

Manson
|
Salut,
c'est ce que je fais justement, et je suis oblige de rajoute ces 5 lignes pour que ca marche sinon ca marche pas.
Je cree mon thread comme ca :
CreateThread(NULL, 0, thread_receive, NULL, 0, &thread_receive_id));
Voila la fonction du thread :
DWORD WINAPI thread_receive(VOID *PVOID) { HINSTANCE instance; FARPROC lpfn ... instance = (HINSTANCE)GetWindowLong(hwndmain,GWL_HINSTANCE); lpfn = MakeProcInstance((FARPROC)dialog_test, instance); CreateDialog(instance, MAKEINTRESOURCE(IDD_DIALOG_TEST), hwndmain, (DLGPROC)lpfn); ... }
Et ca marche pas, sauf si je rajoute les 5 lignes. Je comprend pas pourquoi.
Si cela a pu t'aider.
Arno
------------------------------- Réponse au message : -------------------------------
> Salut, > Si tu utilise CreateDialog c'est que tu fais une dialogbox non modale (qui retour le handle de la dialog tout de suite). > Pas besoin de boucles de messages (car dialogbox), donc ca bloque pas le thread. > > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Bonjour, > > > > voila, je dois creer des fenetre a partir d'un thread. > > Le pb c'est que la fenetre ce cree bien mais on > > ne peut rien faire dedans, car il n'y a pas ca apres > > ca creation : > > while( GetMessage(&msg,NULL,0,0) ) > > { > > TranslateMessage(&msg); > > DispatchMessage(&msg); > > } > > > > Mais je ne veux pas rajouter ces lignes la car je dois > > garder la main dans mon thread, pour qu'il puisse > > creer d'autres fenetre. > > > > J'ai essaye d'attacher les msg de ce thread au thread > > principal avec AttachThreadInput, mais ca ne marche pas. > > > > Quelqu'un aurait une idee ? > > > > D'avance merci. > > > > Arno >
|
|
lundi 28 juillet 2003 à 15:36:26 |
Re : Thread +CreateDialog

aardman
|
Salut, Ah non la je dois avouer que c'est au dessus de mes capatités désolé. Si ton thread se termine juste apres CreateDialog, c'est normal que la dialog ne s'affiche pas. Quand tu met la boucle de messages, ca bloque le thread et donc la dialog peut s'afficher. Je pense que c'est ca.
------------------------------- Réponse au message : -------------------------------
> Salut, > > c'est ce que je fais justement, et je suis oblige de rajoute > ces 5 lignes pour que ca marche sinon ca marche pas. > > Je cree mon thread comme ca : > > CreateThread(NULL, 0, thread_receive, NULL, 0, &thread_receive_id)); > > Voila la fonction du thread : > > DWORD WINAPI thread_receive(VOID *PVOID) > { > HINSTANCE instance; > FARPROC lpfn > ... > instance = (HINSTANCE)GetWindowLong(hwndmain,GWL_HINSTANCE); > lpfn = MakeProcInstance((FARPROC)dialog_test, instance); > CreateDialog(instance, MAKEINTRESOURCE(IDD_DIALOG_TEST), hwndmain, (DLGPROC)lpfn); > ... > } > > Et ca marche pas, sauf si je rajoute les 5 lignes. Je comprend > pas pourquoi. > > Si cela a pu t'aider. > > Arno > > ------------------------------- > Réponse au message : > ------------------------------- > > > Salut, > > Si tu utilise CreateDialog c'est que tu fais une dialogbox non modale (qui retour le handle de la dialog tout de suite). > > Pas besoin de boucles de messages (car dialogbox), donc ca bloque pas le thread. > > > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Bonjour, > > > > > > voila, je dois creer des fenetre a partir d'un thread. > > > Le pb c'est que la fenetre ce cree bien mais on > > > ne peut rien faire dedans, car il n'y a pas ca apres > > > ca creation : > > > while( GetMessage(&msg,NULL,0,0) ) > > > { > > > TranslateMessage(&msg); > > > DispatchMessage(&msg); > > > } > > > > > > Mais je ne veux pas rajouter ces lignes la car je dois > > > garder la main dans mon thread, pour qu'il puisse > > > creer d'autres fenetre. > > > > > > J'ai essaye d'attacher les msg de ce thread au thread > > > principal avec AttachThreadInput, mais ca ne marche pas. > > > > > > Quelqu'un aurait une idee ? > > > > > > D'avance merci. > > > > > > Arno > > >
|
|
lundi 28 juillet 2003 à 15:44:15 |
Re : Thread +CreateDialog

Manson
|
Salut,
nan nan, le thread ne se termine pas, mais j'ai fait un raccourci pour pas avoir a copier/coller tout le code. En fait mon thread tourne en boucle sur un select, et dispatch les msg recu aux fonctions associes a l'entete du msg, ensuite c'est dans une des fonctions que je fais le CreateDialog.
Mon thread ne se bloque donc pas sauf si je rajoute les 5 lignes pour les messages.
Desole de ne pas avoir ete claire.
Arno
|
|
lundi 28 juillet 2003 à 15:48:20 |
Re : Thread +CreateDialog

aardman
|
Désolé c'est pas dans mes cordes alors.
------------------------------- Réponse au message : -------------------------------
> Salut, > > nan nan, le thread ne se termine pas, mais j'ai fait un raccourci pour pas avoir a copier/coller tout le code. > En fait mon thread tourne en boucle sur un select, > et dispatch les msg recu aux fonctions associes > a l'entete du msg, ensuite c'est dans une des fonctions > que je fais le CreateDialog. > > Mon thread ne se bloque donc pas sauf si je rajoute les 5 > lignes pour les messages. > > Desole de ne pas avoir ete claire. > > Arno
|
|
lundi 28 juillet 2003 à 15:49:33 |
Re : Thread +CreateDialog

Manson
|
arf ok. Merci quand meme.
Arno
------------------------------- Réponse au message : -------------------------------
> Désolé c'est pas dans mes cordes alors. > > ------------------------------- > Réponse au message : > ------------------------------- > > > Salut, > > > > nan nan, le thread ne se termine pas, mais j'ai fait un raccourci pour pas avoir a copier/coller tout le code. > > En fait mon thread tourne en boucle sur un select, > > et dispatch les msg recu aux fonctions associes > > a l'entete du msg, ensuite c'est dans une des fonctions > > que je fais le CreateDialog. > > > > Mon thread ne se bloque donc pas sauf si je rajoute les 5 > > lignes pour les messages. > > > > Desole de ne pas avoir ete claire. > > > > Arno >
|
|
lundi 28 juillet 2003 à 16:42:51 |
Re : Thread +CreateDialog

Manson
|
Ok j'ai trouve une solution :
J'ai cree un message (donc un simple #define MONMSG 0x37298), et ensuite dans le switch des msg de ma fenetre principal j'ai rajoute :
case MONMSG: /*code pour creer la fenetre*/ break;
Et a partir de mon thread j'envoi le message a ma fenetre :
SendMessage(hwndmain, MONMSG, (WPARAM)0,(LPARAM)0);
Et voila, ca marche nickel.
Arno
------------------------------- Réponse au message : -------------------------------
> arf ok. Merci quand meme. > > Arno > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Désolé c'est pas dans mes cordes alors. > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Salut, > > > > > > nan nan, le thread ne se termine pas, mais j'ai fait un raccourci pour pas avoir a copier/coller tout le code. > > > En fait mon thread tourne en boucle sur un select, > > > et dispatch les msg recu aux fonctions associes > > > a l'entete du msg, ensuite c'est dans une des fonctions > > > que je fais le CreateDialog. > > > > > > Mon thread ne se bloque donc pas sauf si je rajoute les 5 > > > lignes pour les messages. > > > > > > Desole de ne pas avoir ete claire. > > > > > > Arno > > >
|
|
lundi 28 juillet 2003 à 17:25:56 |
Re : Thread +CreateDialog

aardman
|
Salut, Content que ca marche, il fallait y penser :) Sinon, les messages reservés pour windows sont < 0x0400. Donc pas besoin d'aller jusqua 0x37298 pour etre sur d'avoir un message inutilisé, 0x0401 suffit.
------------------------------- Réponse au message : -------------------------------
> Ok j'ai trouve une solution : > > J'ai cree un message (donc un simple #define MONMSG 0x37298), et ensuite dans le switch des msg de ma fenetre > principal j'ai rajoute : > > case MONMSG: > /*code pour creer la fenetre*/ > break; > > Et a partir de mon thread j'envoi le message a ma fenetre : > > SendMessage(hwndmain, MONMSG, (WPARAM)0,(LPARAM)0); > > Et voila, ca marche nickel. > > Arno > > > > ------------------------------- > Réponse au message : > ------------------------------- > > > arf ok. Merci quand meme. > > > > Arno > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Désolé c'est pas dans mes cordes alors. > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > Salut, > > > > > > > > nan nan, le thread ne se termine pas, mais j'ai fait un raccourci pour pas avoir a copier/coller tout le code. > > > > En fait mon thread tourne en boucle sur un select, > > > > et dispatch les msg recu aux fonctions associes > > > > a l'entete du msg, ensuite c'est dans une des fonctions > > > > que je fais le CreateDialog. > > > > > > > > Mon thread ne se bloque donc pas sauf si je rajoute les 5 > > > > lignes pour les messages. > > > > > > > > Desole de ne pas avoir ete claire. > > > > > > > > Arno > > > > > >
|
|
lundi 28 juillet 2003 à 18:43:00 |
Re : Thread +CreateDialog

Manson
|
Ah ok, c'est util ca, grand merci.
Arno
------------------------------- Réponse au message : -------------------------------
> Salut, > Content que ca marche, il fallait y penser :) > Sinon, les messages reservés pour windows sont < 0x0400. > Donc pas besoin d'aller jusqua 0x37298 pour etre sur d'avoir un message inutilisé, 0x0401 suffit. > > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Ok j'ai trouve une solution : > > > > J'ai cree un message (donc un simple #define MONMSG 0x37298), et ensuite dans le switch des msg de ma fenetre > > principal j'ai rajoute : > > > > case MONMSG: > > /*code pour creer la fenetre*/ > > break; > > > > Et a partir de mon thread j'envoi le message a ma fenetre : > > > > SendMessage(hwndmain, MONMSG, (WPARAM)0,(LPARAM)0); > > > > Et voila, ca marche nickel. > > > > Arno > > > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > arf ok. Merci quand meme. > > > > > > Arno > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > Désolé c'est pas dans mes cordes alors. > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > Salut, > > > > > > > > > > nan nan, le thread ne se termine pas, mais j'ai fait un raccourci pour pas avoir a copier/coller tout le code. > > > > > En fait mon thread tourne en boucle sur un select, > > > > > et dispatch les msg recu aux fonctions associes > > > > > a l'entete du msg, ensuite c'est dans une des fonctions > > > > > que je fais le CreateDialog. > > > > > > > > > > Mon thread ne se bloque donc pas sauf si je rajoute les 5 > > > > > lignes pour les messages. > > > > > > > > > > Desole de ne pas avoir ete claire. > > > > > > > > > > Arno > > > > > > > > > >
|
|
Cette discussion est classée dans : creer, fenetre, thread, msg, createdialog
Répondre à ce message
Sujets en rapport avec ce message
J'veux dire qqch amon programme...HELP !!! [ par lutin ]
Oui en fait, j'aimerais savoir si qqun peux m'aider dans l'utilisation des messages windows.J'explique : je crée une fenetre qui lance un threaddans m
creer un .exe qui ouvre une fenetre internet explorer [ par dany ]
bonjourj'aimerais avoir le source pour creer un fichier.exe a mettre sur un cd et qui ouvre un fichier .htmen c++ (avec dev-c++)merci d'avance
lancer thread dans fenetre execution differente [ par girardbe ]
Bonjour tout le monde,je viens vous demander de l'aide, car je bloque et j'ai rien trouvé sur le net.G un prog C++ Windows ki lance 2 thread, je veux
Thread [ par milhandril ]
g un petit pb avec les Trheads. Ca compile bien mais lorsque la fonction associé au Thread se lance une erreur survient. en global g:static bool rech=
CreateDialog et resources [ par anthraxx ]
C simple, je veux que mon application Win32, affiche comme fenetre principale une boite de dialogue que j'ai fait avec le 'resource editor' et qui est
MFC +multi window [ par Manson ]
Salut,voila je debute dans les mfc, et j'aimerai savoir comment faire pour creer une nouvelle fenetre qui ne mette pas en attente la fenetre qui l'a c
CreateDialog est un échec! [ par anthraxx ]
j'ai un problème avec CreateDialog :ma boite de dialogue n'a pas de titre et ne peut pas être déplacée, et ne cède pas le focus à des fenêtres filles
Creer une de deuxieme fenetre Win32 [ par guitoulefoux ]
Bonjour,j'ai fais un tout petit prog qui affiche une fenetre1 (ronde), et j'aimerais apres une action sur un boutton (qui serait sur ma fenetre1) fair
Synchronisation!!! [ par PunkDude424 ]
J'ai un problème avec la synchronisation de ThreadVoilà, je fais un "ScreenSaver" qui affiche des point a des temps radom et dune durée random aussi..
Creer un hook dans une dll [ par zinotron ]
Je n'ai pas tout compris moi ...j'ai fait une rechercher dans les systeme de creation de hook dans l'API win32, et je compris cela : RIEN.enfin si j'a
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|