Pointeurs de fonction pour winapi fonctions (stdcall/cdecl)

Svp quelqu'un pourrait me donner quelques conseils pour la création de pointeurs de fonction pour MS winapi fonctions? Je suis en train de créer un pointeur pour DefWindowProc (DefWindowProcA/DefWindowProcW) mais obtenir cette erreur:

LRESULT (*dwp)(HWND, UINT, WPARAM, LPARAM) = &DefWindowProc;

error C2440: 'initializing' : cannot convert from 
'LRESULT (__stdcall *)(HWND,UINT,WPARAM,LPARAM)' 
to 'LRESULT (__cdecl *)(HWND,UINT,WPARAM,LPARAM)'

Je ne peux pas comprendre ce que j'ai besoin de l'utiliser parce que je ne suis pas habitué à la MS ascii/large macros. Par ailleurs, je fais de la création d'un pointeur de fonction pour faire un rapide hack, et, malheureusement, je n'ai pas le temps d'expliquer pourquoi - mais peu importe, je pense que cette question sera utile aux personnes qui ont besoin de créer winapi des pointeurs de fonction.

Mise à jour:

Ce code fonctionne, mais je suis inquiet que c'est une mauvaise pratique (et n'est pas conforme à unicode/ascii options de compilation). Dois-je définir deux spécifications?

LRESULT (__stdcall* dwp)(HWND, UINT, WPARAM, LPARAM) = &DefWindowProc;

Mise à jour 2:

C'est plus agréable (grâce à nobugz):

WNDPROC dwp = DefWindowProc;
en.wikipedia.org/wiki/X86_calling_conventions
Je ne pense pas qu'il soit mauvais de la pratique sur le fait que vos conventions d'appel de match.
cependant, il est fou de MS pour avoir 3 différentes conventions d'appel, ils doivent avoir sélectionné un seul et coincé avec elle!
La sp n'est pas responsable de l' __cdecl et à peine pour __fastcall. Code 64 bits n'a qu'une convention d'appel. Qui ajoute un autre sera tourné.
Nobugz, Microsoft a également thiscall, qui est la valeur par défaut de méthode. Il n'est pas compatible avec n'importe quel de cdecl, stdcall, ou thiscall. Et Microsoft de thiscall n'est pas la même chose que de Borland.

OriginalL'auteur Nick Bolton | 2009-12-28