Accèder à un objet depuis Fonction membre de callback statique
Utilisateur anonyme
-
12 mai 2004 à 15:42
Utilisateur anonyme -
12 mai 2004 à 23:03
Bonjour,
J'ai une fonction membre statique de callback, qui correspond à une classe de fenêtre que j'enregistre.
Comment faire pour transmettre à cette fonction des pointeurs d'objets que j'ai créé ?
(Je n'utilise aucune variable globale)
J'ai fait quelques recherches : dans les explications que j'ai pu trouver, il était question des fonctions SetWindowLong() ou SetProp(), mais je ne vois pas le rapport :)
Il faut dire aussi que je débute, et je ne vois pas comment procéder...
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 12 mai 2004 à 18:36
regroupe toute les données à associer à ta fenêtre dans une structure ou une classe :
struc Data
{
};
lors de la création de ta fenêtre, passe un pointeur sur cette structure comme dernier paramètre à CreateWindow
dans ta WndProc, qd tu recoit WM_CREATE, tu récupère ce pointeur et tu l'associe au hWnd par SetWindowLong.
pour les autres messages, tu le récupère par GetWindowLong :
// affecter l'objet TMainFrame lors de la création de la fenêtre, contenu dans la
// structure CREATESTRUCT pointée par lParam
if(uMsg == WM_CREATE)
{
LPCREATESTRUCT lpcs = (LPCREATESTRUCT) lParam;
SetWindowLong(hWnd, GWL_USERDATA, (LONG)lpcs->lpCreateParams);
}
// récupération objet TMainFrame associé à la fenêtre
TMainFrame* pWnd = (TMainFrame*) GetWindowLong(hWnd, GWL_USERDATA);
if(!pWnd)
return DefWindowProc(hWnd, uMsg, wParam, lParam);
exemple tiré de ma source "Paint" qui utilise cette technique.
Vous n’avez pas trouvé la réponse que vous recherchez ?