begin process at 2012 05 30 13:45:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Systeme

 > 

Thread +CreateDialog


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club
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

Membre Club
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

Membre Club
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

Membre Club
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
> > > >
> > >
> >
>

1 2

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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales