2010-11-16 44 views
3

我有一個小的SDI應用程序,我試圖添加菜單用法的跟蹤,即。某些菜單項目被用戶選擇多少次。C++ sdi應用程序中的Static_cast編譯器錯誤

某些菜單項由View組件(DemoView.cpp)處理,其他菜單項由主應用程序(DemoApp.cpp)處理。由於跟蹤結構是在主應用程序中定義的,我相信當菜單項(由View處理)被選中時,我必須通知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

如果您確定轉換,您需要使用另一個轉換。這叫做可怕的reinterpret_cast <>。

3

根據錯誤,回調函數必須是從CWnd派生的類的成員函數。使CDemoApp從CWnd派生,並且您的代碼應該可以編譯和工作。