2010-11-16 3 views
3

J'ai une petite application SDI à laquelle j'essaye d'ajouter le suivi de l'utilisation du menu, c'est à dire. combien de fois certains éléments de menu sont sélectionnés par l'utilisateur.erreur de compilateur Static_cast dans C++ application sdi

Certains éléments de menu sont gérés par le composant Vue (DemoView.cpp) et d'autres par l'application principale (DemoApp.cpp). Étant donné que la structure de suivi est définie dans l'application principale, je crois que je dois notifier le parent de la vue avec un message spécial lorsqu'un élément de menu (géré par la vue) est sélectionné.

Si cela est correct, mon problème est que je ne peux pas créer la commande ON_MESSAGE appropriée. Il ressemble à ceci:

ON_MESSAGE(WM_INCREASE_FREQ, &CDemoApp::OnIncreaseFreq) 

où OnIncreaseFreq() est défini comme suit:

LRESULT CDemoApp::OnIncreaseFreq(WPARAM, LPARAM) 

Cependant, je reçois cette erreur:

error C2440: 'static_cast' : cannot convert from 
'LRESULT (__thiscall CDemoApp::*)(WPARAM,LPARAM)' to 
'LRESULT (__thiscall CWnd::*)(WPARAM,LPARAM)' 

Je vous serais reconnaissant toute aide à ce

Répondre

0

Si vous êtes sûr de la conversion, vous devez utiliser une autre conversion. On l'appelle le redoutable reinterpret_cast >. Selon l'erreur, la fonction de rappel doit être une fonction membre d'une classe dérivée de CWnd.

3

Selon l'erreur, la fonction de rappel doit être une fonction membre d'une classe dérivée de CWnd. Faites en sorte que CDemoApp dérive de CWnd et que votre code compile et fonctionne.

Questions connexes