-
pointeur de fonction
Bonjour à tous.
Je développe un programme avec VC++ et les API windows.
Ce programme comporte 3 modules (fichier de fonctions) et pour lesquels est associée une procédure de fenêtre.
Les procédures de fenêtre correspondent à la fonction :
LRESULT WINAPI wndproc(HWND hFenetre, UINT message, WPARAM wParam, LPARAM lParam) ;
J'ai donc dans mon programme 3 procédures pour chaque module mais une seule procédure sera utilisée après que l'utilisateurs ait fait son choix.
J'aimerai donc créer un pointeur de fonction qui sera initialisé vers l'une ou l'autre de ces procédures.
if(...)
pFonctionProc = wndproc1;
else if(...)
pFonctionProc = wndproc2;
else
pFonctionProc = wndproc3;
Cette déclaration ne passe pas avec VC++ :
LRESULT WINAPI (*pFonctionProc)(HWND, UINT, WPARAM, LPARAM);
Le compilateur me dit "error syntaxe '(' ".
-
Salut
Il suffit de bouger le WINAPI :
Code:
LRESULT (WINAPI *pFonctionProc)(HWND, UINT, WPARAM, LPARAM);
Ou encore d'utiliser le type prédéfini :
Code:
WNDPROC pFonctionProc;
-
Merci c''est exactement ça.
Mais pourrez tu me dire ce qui se passe dans ce type de déclaration et pourquoi ma déclaration n'était pas reconnue.
-
WINAPI est une macro qui équivaut à __stdcall, ça ne fait donc pas partie du type de retour.
Après, que la convention d'appel doive être à l'intérieur de la parenthèse et non derrière le type de retour, c'est juste la syntaxe je ne pense pas qu'il y ait de raison à ça.