我有一个小的SDI应用程序,我试图添加菜单用法的跟踪,即。用户选择某些菜单项的次数。
一些菜单项由View组件(DemoView.cpp)处理,其他菜单项由主应用程序(DemoApp.cpp)处理。由于跟踪结构是在主应用程序中定义的,我相信当选择菜单项(由视图处理)时,我必须通过特殊消息通知View的父级。
如果这是正确的,我的问题是我无法创建正确的ON_MESSAGE命令。 它看起来像这样:
ON_MESSAGE(WM_INCREASE_FREQ, &CDemoApp::OnIncreaseFreq)
其中OnIncreaseFreq()的定义如下:
LRESULT CDemoApp::OnIncreaseFreq(WPARAM, LPARAM)
但是我收到了这个错误:
error C2440: 'static_cast' : cannot convert from
'LRESULT (__thiscall CDemoApp::* )(WPARAM,LPARAM)' to
'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'
我将不胜感激任何帮助
答案 0 :(得分:3)
根据错误,回调函数必须是从CWnd派生的类的成员函数。使CDemoApp派生自CWnd,您的代码应该编译并运行。
答案 1 :(得分:0)
如果您确定转换,则需要使用其他转换。它被称为可怕的reinterpret_cast<>。