[VC++] Fonctions Callback help!!

Fonctions Callback help!! [VC++] - C++ - Programmation

Marsh Posté le 16-05-2002 à 17:09:48    

Voila g un petit souci. J'explique le pb.
J'ai une fct callback qui prend en parametre un unsigned long et ce prototype ne peut pas etre modifie. J'aimerai pouvoir, dans cette fct callback, modifie le texte d'une edit box situe dans ma mainframe. Le pb c que ma fct callback ne connait pas ma mainframe donc je ne peux pas acceder a mon edit box.
 
Comment je peux faire?

Reply

Marsh Posté le 16-05-2002 à 17:09:48   

Reply

Marsh Posté le 16-05-2002 à 17:12:53    

ta fonction callback a forcément wparam et lparam en argument. donc tu peux lui passer un pointeur sur la classe de ton controle via un de ces arguments, et ainsi accéder à ses membres.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-05-2002 à 17:23:27    

Mais c pas la mienne de fct callback. En fait je peux juste remplir le corps de la fct.
Je te montre :
 
typedef struct _BrowseDlgConfig {
  // Configuration flags
  DWORD   bIncludeInstanceIndex:1,
          bSingleCounterPerAdd:1,
          bSingleCounterPerDialog:1,
          bLocalCountersOnly:1,
          bWildCardInstances:1,
          bHideDetailBox:1,
          bInitializePath:1,
          bDisableMachineSelection:1,
          bIncludeCostlyObjects:1,
          bShowObjectBrowser:1,
          bReserved:23;
 
  HWND                hWndOwner;
  LPTSTR              szDataSource;
  LPTSTR              szReturnPathBuffer;
  DWORD               cchReturnPathLength;
  CounterPathCallBack pCallBack;
  DWORD_PTR           dwCallBackArg;
  PDH_STATUS          CallBackStatus;
  DWORD               dwDefaultDetailLevel;
  LPTSTR              szDialogBoxCaption;
} PDH_BROWSE_DLG_CONFIG, *PPDH_BROWSE_DLG_CONFIG;
 
bref au champ pCallBack il y a comme description :
 
pCallBack  
Pointer to the callback function used to update application buffers and controls when a multiple-selection dialog box is configured. For more information, see CounterPathCallback.  
 
je te montre la fct CounterPathCallback :
 
PDH_STATUS __stdcall CounterPathCallBack(
  DWORD_PTR dwArg
);
 
Donc ma fct callback ne peut pas prendre d'autres prototypes !
 
Que faire ... ?

Reply

Marsh Posté le 16-05-2002 à 17:40:06    

UP!! :cry:

Reply

Marsh Posté le 16-05-2002 à 17:46:22    

En regardant rapidement comme ca, je dirais que tu mets les arg dans DWORD_PTR dwCallBackArg; Et comme ca ton prb est réglé


---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 16-05-2002 à 17:53:30    

Donc ca veut dire que quand je suis dans la methode de ma mainframe qui appelle la fct callback, je mets dans l'argument dwCallBackArg mon pointeur this caste avec DWORD_PTR.
Est ce que je me trompe ou est ce que c ca?

Reply

Marsh Posté le 16-05-2002 à 17:58:35    

Ben oui...j'ai pas touché à la programmation windows depuis des lustres mais je dirais ca!
 
ca là:
PDH_STATUS __stdcall CounterPathCallBack
C'est un exemple de ce qui faudrait mettre en pCallBack?
 
(désolé j'ai du mal là, je suis un peu naze)


---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 17-05-2002 à 09:12:27    

c ca! merci du coup de main :)

Reply

Marsh Posté le 17-05-2002 à 10:01:17    

J'ai toujours un pb!!
Je passe a ma fct callback une structure data de type t_mydata (que j'ai cree).
Pour cela je fais :
init.dwCallBackArg = (DWORD_PTR)&data;
sachant que init est de type PDH_BROWSE_DLG_CONFIG.
Comment je fais une fois que je suis dans ma fct callback pour acceder a mes champs de ma structure data ?
J'ai essaye en creant un pointeur sur une t_mydata et de lui affecter mon DWORD_PTR que j'ai en argument de ma fct callback. Mais le compilo me dit qu'il ne peut pas convertir un DWORD_PTR en un t_mydata *.
Comment je peux faire?

Reply

Marsh Posté le 17-05-2002 à 10:04:45    

try58 a écrit a écrit :

J'ai toujours un pb!!
Je passe a ma fct callback une structure data de type t_mydata (que j'ai cree).
Pour cela je fais :
init.dwCallBackArg = (DWORD_PTR)&data;
sachant que init est de type PDH_BROWSE_DLG_CONFIG.
Comment je fais une fois que je suis dans ma fct callback pour acceder a mes champs de ma structure data ?
J'ai essaye en creant un pointeur sur une t_mydata et de lui affecter mon DWORD_PTR que j'ai en argument de ma fct callback. Mais le compilo me dit qu'il ne peut pas convertir un DWORD_PTR en un t_mydata *.
Comment je peux faire?  




 
...Un cast explicite !?
t_mydata* pTesData = (t_mydata*) TonPointeurDWORD;

Reply

Marsh Posté le 17-05-2002 à 10:04:45   

Reply

Marsh Posté le 17-05-2002 à 10:09:02    

C bon ca marche !! effectivement mon affectation n'etait pas bonne! j'avais oublie l'etoile dans l'operateur de cast.
Merci les gars!

Reply

Marsh Posté le 17-05-2002 à 15:33:18    

[:prosper%20youplaboum]
 
[:impulse]

Reply

Marsh Posté le 17-05-2002 à 15:37:40    

ce pollueur impulse c pas croyable!! :gun:

Reply

Marsh Posté le 17-05-2002 à 15:48:37    

[:cupra]
 
hehe

Reply

Sujets relatifs:

Leave a Replay

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