C ++ sdi应用程序中的Static_cast编译器错误

时间:2010-11-16 10:52:36

标签: c++ event-handling message menuitem static-cast

我有一个小的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)'

我将不胜感激任何帮助

2 个答案:

答案 0 :(得分:3)

根据错误,回调函数必须是从CWnd派生的类的成员函数。使CDemoApp派生自CWnd,您的代码应该编译并运行。

答案 1 :(得分:0)

如果您确定转换,则需要使用其他转换。它被称为可怕的reinterpret_cast<>。