begin process at 2012 05 30 06:51:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

récupèrer une structure avec PostThreadMessage et Peekmessage


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

récupèrer une structure avec PostThreadMessage et Peekmessage

jeudi 11 février 2010 à 15:16:45 | récupèrer une structure avec PostThreadMessage et Peekmessage

LaTatadu91

Bonjour,

Je cherche à faire communiquer 2 threads ensemble, on ma conseillé sur ce site les fonctions Postthreadmessage et Peekmessage et effectivement cela correspond tout à fait à mes attentes
cependant lorsque j'essaye de faire passer des paramètres je rencontres quelques soucis(du a ma méconnaissance des lparam et wparam)
en gros si j'envoi un int comme ceci:
int test =99;
PostThreadMessage(HandleMainThread,MSG_1,0,(LPARAM)test);

je reçois bien 99 dans msg.lparam

mais je ne sais aps comment faire pour passer toutes une structure style
struct test{
int toto
float tata
bool titi
}
ni pour passer plusieurs variables(indépendantes)

merci de m'aider à mieux comprendre le fonctionnement!



 
jeudi 11 février 2010 à 15:48:08 | Re : récupèrer une structure avec PostThreadMessage et Peekmessage

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Une possibilité:
Fais un VirtualAlloc, tu remplis cette adresse des données de ta struct, passe cette adresse en LPARAM au thread qui fera le VirtualFree quand fini de s'en servir.

ciao...
BruNews, MVP VC++
jeudi 11 février 2010 à 16:06:12 | Re : récupèrer une structure avec PostThreadMessage et Peekmessage

LaTatadu91

Ok, merci je vais regarder du coté de ces fonctions (que je découvre)

je reviens si problème.



 
jeudi 11 février 2010 à 16:07:19 | Re : récupèrer une structure avec PostThreadMessage et Peekmessage

Pistol_Pete

Salut
Que ce passe t'il si on fait un un malloc ou un new à la place d'un VirtualAlloc?


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
jeudi 11 février 2010 à 17:54:12 | Re : récupèrer une structure avec PostThreadMessage et Peekmessage

BruNews

Administrateur CodeS-SourceS
Je n'utilise jamais de CRT mais devrait aller.
VirtualAlloc garantit l'alignement sur taille de page system, soit 4 Ko donc ALIGN 16 au mini. C'est ce qui convient impec si on doit transmettre des données pour calculs par SSE2 ou sup.

ciao...
BruNews, MVP VC++
vendredi 12 février 2010 à 10:45:20 | Re : récupèrer une structure avec PostThreadMessage et Peekmessage

LaTatadu91


Ok, merci ça semble marchait.
Juste pour infos, si je veux faire passer plusieurs variables mais qui ne sont pas dans la même structure, comment faire avec un seul "lparam" ?

 
vendredi 12 février 2010 à 11:19:52 | Re : récupèrer une structure avec PostThreadMessage et Peekmessage

BruNews

Administrateur CodeS-SourceS
Par force le destinataire doit connaitre ce qu'il attend, sinon possible mais il faudrait au début du bloc mémoire un header définissant ce qui suit.
pmem = (BYTE*) VirtualAlloc(0, LEN, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);

On met dedans une struct DATA et 2 DWORDs:
memcpy(pmem, myData, sizeof(DATA));
*((DWORD*) (pmem + sizeof(DATA)) = dw1;
*((DWORD*) (pmem + sizeof(DATA) + 4) = dw2;

En C tout est permis, la seule limitation est dans le crane.

ciao...
BruNews, MVP VC++
vendredi 12 février 2010 à 11:25:20 | Re : récupèrer une structure avec PostThreadMessage et Peekmessage

LaTatadu91

Merci, effectivement c'est une bonne astuce.

j'aime bien ta conclusion, mais encore faut-il de solides connaissances.


 


Cette discussion est classée dans : passer, structure, lparam, postthreadmessage, peekmessage


Répondre à ce message

Sujets en rapport avec ce message

passer d'un widget a une autre structure [ par khaledtaib ] bonjourj' ai un petit programme de traitement d'image en language C, que je veux lui creer une interface graphique en GTK+.ce programme doit afficher Passer une structure par reference [ par Neo_Fr ] Neo_Fr Comment passer une structure de VB à c [ par TomC ] Bonjour, Tout d'abord je tiens à préciser que je n'ai pas trouvé de réponse complète à mon problème sur internet. (en tout cas je n'arriva pas à l'app Adresse d'une fonction CallBack dans une classe [ par Capa6T ] Bonjour, J'ai un petit souçis pour récupèrer l'adresse d'une fonction CallBack dans une classe. MaClasse.h : ------------ class MaClasse { protected Déclaration d'une class [ par Turok ] Salut, Je débute en C++, et dans mon prog j'ai créer une class. Le prob, c'est que quand une instance de cette class (Class_object objet(""), pour pou Passer un tableau 2D en paramètre en C [ par poiuytrez3 ] Bonjour, je souhaiterai passer en paramètre un tableau 2D, mais j'ai une erreur de compilation, voici mon code: #include #include void remplissage envoie d'une structure dans une pile [ par Hellboy67 ] je dispose d'une pile que j'ai appelé pune structure que j'ai appelé cases (ci-dessous)struct donnee{ position pos; queue valeur;};la ou sa coince c q Remplir une structure "globale", comment ??? [ par julien_boss ] Bonjour à tous,voilà donc j'expose mon problème, si vous voulez bien  :je crée une structure dans un fichier .h lu par tous les fichiers de mon applic desallocation de mémoire de structure..... [ par psyko_flex ] Je voudrais une petite aide sur la désallocation de la mémoire...voila je passe unen structure dans une fonction, regarder l exemple:( ma structure s bd de passage de donnees entre DialogBox..... [ par aabdoos ] slt les gars...tjrs avec de nouveaux pbs mais ce dernier me fait vraiment chier....alors le pb est : g 2 dialogbox , g creer ds le fichier cpp de la


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 : 1,342 sec (3)

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