Je n'arrive pas à transmettre l'adresse du membre à une autre fonction. Voici ce que im essayant de faire:Passer l'adresse du membre de la classe correctement avec la possibilité de l'invoquer
J'ai la defention suivante:
bool MyClass::FunctionName();
puis quelque part dans mon programme, j'exécutez la commande suivante:
::SendMessage(hWnd, WM_NULL, (WPARAM)this, (LPARAM)&MyFunction);
où ce peuplements Pour MyClass
Une fois que mon WndProc est exécuté, j'essaie ceci:
LRESULT CALLBACK MyClass::WndProc(_In_ HWND hWnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
{
Myclass* pClass= (Myclass*)wParam;
std::function<bool()> pFunc = std::bind(bool(&Myclass::MyFunction)&lParam, pClass);
pFunc();
}
erreurs im receving:
avertissement C4554: '&': vérifier la priorité des opérateurs d'erreur possible; utiliser parenthèses pour clarifier la priorité
Erreur 3 Erreur C2064: terme ne pas à une fonction prenant 1 arguments c: \ program files (x86) \ Visual Studio Microsoft 12.0 \ vc \ include \ xrefwrap 58
Ne fais pas ça! Attendre qu'une procédure WPARAM d'une fenêtre soit un pointeur de classe se terminera par un désastre (notez que l'autre peut aussi appeler SendMessage) –
@ DieterLuccking, la fonction WndProc suivante est en cours de sous-classement, je suis sûr que la vie de ma classe est assurée. –
Le type s'appelle 'bool MyClass :: *()' et vous ne voulez pas l'adresse * de 'lParam'. – molbdnilo