Mon probleme vient de LRESULT CALLBACKwndUserEditNetConProc(...)
Cette fonction gere les message.
Lorsque je l'invoque lors de la creation, il me dit:
cannot convert from '' to 'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)
par contre des que je la sort de la class sa passe sans probleme.
Mais dans ce cas je ne pas creer plusieur fenetre ayant chacun son process d'ecoute.
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 8 sept. 2005 à 12:23
Les CALLBACK ne peuvent être membre d'une classe a moins d'être static (c'est pour cela qu'en les mettant en dehors ça marche).
Pour t'en sortir, il faut associer au HWND un pointeur sur l'objet de la classe qui gère le tout.
Une solution :
- Mettre static la DlgProc.
- Créer le dialog Avec DialogBoxParam et mettre en dernier param un pointeur sur l'objet de la classe associé au diloag.
- Gérer le message WM_INITDIALOG et associer le pointeur au HWND, pour les autres récupérer le pointeur, puis appeller une DlgProc non statique qui aura accès aux memùbres de l'objet :
if(uMsg == WM_INITDIALOG)
SetWindowLong(hDlg, GWL_USERDATA, lParam);
// récupération objet associé à la boîte de dialogue
Obj* pDlg = (Obj*) GetWindowLong(hDlg, GWL_USERDATA);
pDlg->DlgProcNoStatic(...);
babylone2019
Messages postés32Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 mars 2008 9 sept. 2005 à 10:10
ymca2003
J'ais repris tes conseil mais j'ais utiliser la fonction CreateDialogParam()
Il semble que les fenetres utilise bien des espace memoire different
toutefois je ne récupère pas correctement l'objet (je suis incapable de lire les variables associer)
En plus, je me demandais : il ne faut pas renvoyer l'objet a chaque fois que je fait un post par la suite?