Attention, question qui fait mal au crâne ! C++, API Win32

Attention, question qui fait mal au crâne ! C++, API Win32 - Programmation

Marsh Posté le 14-06-2001 à 11:21:35    

j'utilise une fonction de l'API qui prend 2 paramètres: une pointeur de fonction, et un LPARAM pour pouvoir passer des paramètres à cette "CALLBACK fonction"
 
ma question est : Comment faire pour passer plusieurs paramètres à cette fonction !?

Reply

Marsh Posté le 14-06-2001 à 11:21:35   

Reply

Marsh Posté le 14-06-2001 à 11:26:03    

je suis pas sur d'avoir bien compris ta question mais je tente : en passant un pointeur sur une structure.

Reply

Marsh Posté le 14-06-2001 à 11:28:39    

t'inquiètes, je apparement, t'as compris ma question, mais donc à ton avis, on est obligé de créer une structure pour ça !?

Reply

Marsh Posté le 14-06-2001 à 11:41:43    

ben d'aprés mes vagues souvenirs des API win, c'est comme ça que fonctionnent beaucoup des fonctions. une structure + un pointeur dessus pour passer en paramètre. ça ne me semble pas choquant, quess t'en pense.

Reply

Marsh Posté le 14-06-2001 à 11:58:08    

ouais, j'imagine que t'as raison, que c la seule solution...
 
Tes vagues souvenirs de l'API !? t'utilises quoi maintenant !?

Reply

Marsh Posté le 14-06-2001 à 11:58:42    

linux

Reply

Marsh Posté le 14-06-2001 à 12:03:32    

en essayeant d'être vraiement objectif (en oubliant tous les "fuck Bill Gates !" que t'as lu, entendu, ou même prononcé sans trop savoir pourquoi), tu trouves quoi de mieux à la prog sous Linux ?

Reply

Marsh Posté le 14-06-2001 à 12:15:40    

:lol:  
 
ben pas grand chose mais on bosse aussi sur des stations UNIX alors pour dév sur mon PC je me suis mis un linux !
 
et pi c'est pas trop une question de dév (passke les codes, si ils sont à peu prés propres, ils compileront sous win), c'est plutôt l'OS que je préfère. Bon, faut dire que pour le moment, je fais que de la console... (pas besoin d'api) (je me suis d'ailleurs jamais penché sur les libs et les toolkits de linux alors je peux pas te dire si c'est mieux que les api win)

Reply

Marsh Posté le 14-06-2001 à 15:53:05    

Si le CallBack ne prévoit que deux arguments, je suis pas certain (suis pas spécialiste) qu'il y ait moyen.
 
Si on a des variables globales, on peut les utiliser/gérer dans le CallBack à part des paramètres passés lors de l'appel. C'est tout ce que j'ai trouvé dans ce genre de contexte (ça marche ainsi pour moi, pauvre amateur (galérien parfois !)).

Reply

Marsh Posté le 14-06-2001 à 16:08:18    

minusplus a écrit a écrit :

ben d'aprés mes vagues souvenirs des API win, c'est comme ça que fonctionnent beaucoup des fonctions. une structure + un pointeur dessus pour passer en paramètre. ça ne me semble pas choquant, quess t'en pense.




API vin ou autres c'est comme ca que marchent les callback...
Resolution numerique/Motif/WIN etc...
 
ce qui est casse pieds c'est quand il n'y a pas le void*...

Reply

Marsh Posté le 14-06-2001 à 16:08:18   

Reply

Marsh Posté le 14-06-2001 à 16:12:26    

ce que je voulais dire c'est que même celles qui sont pas de callback travaillent (toujours d'aprés mes souvenirs => donc pas sur...) avec simplement un paramètre : un pointeur sur une structure. Bon, pour les callback c'est un peu obligé...

Reply

Marsh Posté le 14-06-2001 à 16:52:03    

je suis d'accord ...
essayons d'imaginer comment fonctionne cette fonction qui appelle une autre fonction : elle empile le parametre et l'appelle.
ne sachant pas quelle est la taille du parametre, elle ne peut empiler qu'un pointeur vers quelque chose, ou alors un nombre 32 bit (=> un pointeur ...)
 
donc documente toi sur le LPARAM qu'attend la fonction callback passee en parametre.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 14-06-2001 à 18:46:10    

Typiquement ce genre de fct (callback d'un timer ou multithreading non?) prend un void* en parametre, histoire de passer n'importe quoi..
C moche car c pas oriente objet du tout, mais c pratique..
 
Alors te fais pas de soucis, fait une classe pour passer tes parametres et passe l'adresse sur ton instance de la classe c tt.. :)

 

[edit]--Message édité par H4dd3R--[/edit]


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
Reply

Marsh Posté le 15-06-2001 à 14:12:51    

Salut,
 
Toutes les fonctions de callback travaillent comme ca.
Le plus simple est de definir une classe qui va contenir toutes tes infos, et de passer dans ton LPARAM un pointeur vers un objet de ce type.
 
Sinon je dis de faire une classe car si ton projet est un projet MFC tu peux utiliser les deux macros DECLARE_DYNANIC et IMPLEMENT_DYNAMIC ce qui permet d'utiliser la fonction IsKindOf sur ton pointeur pour pouvoir verifier la validite de celui ci dans ta callback.
 
Voila.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed