Creer plusieur dialog identique

babylone2019 Messages postés 32 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 29 mars 2008 - 8 sept. 2005 à 12:02
babylone2019 Messages postés 32 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 29 mars 2008 - 9 sept. 2005 à 10:10
Bonjour pour expliquer mon probleme,

J'ais donc creer une class dans laquel je fout toute mes fonciton relative au dialog.

class userEditNetConDlg
{
public:

std::string selection;
std::string server;
std::string share;
HWND hUserEditNetConDlg;
HWND hUserEditNetConList;
BOOL initLectorList();
bool OnValideClick();
bool initWay();
BOOL OnInitDialog(HWND hWnd);
BOOL OnClose();
HWND Init(HWND hParent,HINSTANCE hInst,std::string tServer,std::string tShare);
BOOL userEditNetConProc(HWND hWnd, UINT mes, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK wndUserEditNetConProc(HWND hWnd, UINT mes, WPARAM wParam, LPARAM lParam);


userEditNetConDlg();
virtual ~userEditNetConDlg();


};

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.

voila j'espere que c'est claire

Merci

8 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
8 sept. 2005 à 12:13
Ptete que ça n'a aucun rapport

Mais dans ce cas, la fonction doit être déclarée en static...
if(!Meilleur("Joky")) return ERREUR;<
0
babylone2019 Messages postés 32 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 29 mars 2008
8 sept. 2005 à 12:17
j'avais oublie la creation de la fenetre

this->hUserEditNetConDlg = CreateDialog(hInst, MAKEINTRESOURCE(IDD_USER_EDIT_NET_CONNECTOR),
hParent, reinterpret_cast<DLGPROC>(wndUserEditNetConProc));
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 sept. 2005 à 12:17
bravo Joky !!!

ciao...
BruNews, MVP VC++
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
8 sept. 2005 à 12:20
Et oui et oui !!!

Merci j'accepte les dons vous savez ;)
if(!Meilleur("Joky")) return ERREUR;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
babylone2019 Messages postés 32 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 29 mars 2008
8 sept. 2005 à 12:23
heu la je capte pas du tout

'static' should not be used on member functions defined at file scope
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
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(...);

un exemple dans ma source paint :
http://www.cppfrance.com/code.aspx?ID=21052
0
babylone2019 Messages postés 32 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 29 mars 2008
8 sept. 2005 à 12:32
justement je me dissais que je devrais lui balancer une référence sur l'objet

je vais essayer cette solution

merci
0
babylone2019 Messages postés 32 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 29 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?
0
Rejoignez-nous