begin process at 2012 05 29 07:55:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

lParam dans les api... comprend rien


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

lParam dans les api... comprend rien

mercredi 3 février 2010 à 13:05:02 | lParam dans les api... comprend rien

Larwin

bonjour à tous et merci d'avance à la communauté de votre aide précieuse !
nouveau dans le monde c\c++, j'avoue que je galère vraiment sur des trucs qui me paraissaient enfantins dans d'autres languages...

voila mon problème :
j'utilise la fonction EnumThreadWindows pour récupérer le HWND des windows associés à un thread.

.....
HWND myWin;
EnumThreadWindows(GetCurrentThreadId(), EnumThreadWndProc, (LPARAM)(LPVOID)myWin);
.....

BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam){
WCHAR windowText[128] = {0};
WCHAR *findText = NULL;
GetWindowText(hwnd, windowText, 120); // récupération du nom de la fenêtre
findText = wcswcs(windowText, L"Toto"); // recherche du mot "Toto" dans le titre
if (findText == NULL){return true;} // Toto n'est pas trouvé, on continu
else {lParam = (LPARAM)hwnd; return false;} // Toto est trouvé, on stop l'exécution
}

et la c'est le drame...
je me perd completement dans les cast (LPARAM) (LPVOID) etc...
en fait je désire passer la variable myWin a la fonction EnumThreadWindows et si je trouve la fenetre Toto dans EnumThreadWndProc, je désire copier la valeur de hwnd dans myWin (le lParam)
je suppose que cela doit se faire grace a des pointeurs mais la je seche...

Merci d'avance à tous !
mercredi 3 février 2010 à 13:47:49 | Re : lParam dans les api... comprend rien

juju12

Réponse acceptée !
EnumThreadWindows(...,(LPARAM)&myWin))

puis

if(fenêtre trouvée) *(HWND*)lParam=hWnd;

mercredi 3 février 2010 à 15:02:05 | Re : lParam dans les api... comprend rien

Larwin

c'est tout simplement génial :)
merci beaucoup juju12, parfait !

pour que je comprenne bien
*(HWND*)lParam = hWnd; signifie que
lParam est l'adresse d'un pointeur vers un HWND -> (HWND*)lParam
et l'étoile devant *(HWND*)lParam signifie la valeur du pointeur qui nous donne
la valeur du pointeur lParam vers un HWND est égal à hWnd ?
j'ai tout bon ?

mercredi 3 février 2010 à 16:15:11 | Re : lParam dans les api... comprend rien

juju12

En fait lParam est le pointeur vers myWnd, mais simplement il n'est pas déclaré comme pointeur mais comme LPARAM (~entier), donc il faut faire un cast (HWND*)lParam pour que le compilateur interprète tout ça correctement.
Alors *(HWND*)lParam=hWNd signifie : placer la valeur hWnd à l'adresse mémoire correspondant à la valeur de lParam (soit l'adresse de myWnd).

C'est tout-à-fait analogue à :
Code C/C++ :
int valeur;
int addresse_de_valeur=(int)&valeur;
*(int*)adresse_de_valeur=2; // = pareil que valeur=2



Cette discussion est classée dans : hwnd, toto, lparam, mywin, enumthreadwindows


Répondre à ce message

Sujets en rapport avec ce message

API :: gestion du mulo [ par JackosKing ] LRESULT CALLBACK Twiny::WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ static bool activate = FALSE; switch ( message ) { case WM_MO probleme openGl niveau debutant [ par AmK ] salut je debute en openGL et j'ai du mal a creer une fenetre le compilateur me mets 2 erreurs :PS: les erreurs du compilateur(vc++ 6.0)sont plus bas ! pb combo box [ par mat74 ] salut a ts j'ai encore 1 ptit pb . j'ai creer un combobox , il marche bien mais le petit pb c'est que les choix possible se range par ordre alphabetiq Gestion des evenements Win32 [ par zibo3 ] J'aimerai créer un événement appuyer sur une touche de type F3 mais cet événement doit se réaliser à chaque fois que j'appuie sur cette touche quelque erreur LNK2001 [ par biscot19 ] j'ai une erreur de LNK 2001 sur la fonction suivanteSNMPAPI_STATUS CALLBACK cbFunc (HSNMP_SESSION hSession, HWND hWnd, UINT wMsg, WPARAM wParam, Mélange entre C++ et Win32 [ par vecchio56 ] J'ai décidé d'encapsuler mes fenêtres dans des classes, mais je me trouve confronté à un problème: en gros je n'arrive pas à changer de WndProc en uti Dll Visual Aide [ par TheMaster ] Salut!j'ai un probleme, j'ai créer un logiciel permettant de visualiser des images.Les images sont stocke en ressource dans un dll.Mais je n'arrive pa Comment sortir d'une boucle avec clic sur un bouton Cancel? [ par rolanddegilead1 ] Bonjour,je suis debutant et je m'arrache les cheveux depuis presque une semaine a cause d'un truc tout bete: en gros je cree une fenetre avec 2 bouton DialoBox [ par noel70 ] Voici ce que j'ai fait, mais le souci, c'est que je n'ai aucune fenetre qui s'affiche,Lors de la compilation, aucune erreur, je ne sais pas d'ou sa vi c++ API Windows : sous classement de fenetre dans une classe [ par _Jonathan ] Bonjour, je cherche à créer un controle de type Edit en utilisant une classe. Le probleme, c'est que je souhaite redéfinir la procedure callback du co


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,359 sec (4)

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