3

メニューの使用状況の追跡を追加しようとしている小さなSDIアプリケーションがあります。ユーザーが特定のメニュー項目を選択した回数。

一部のメニュー項目はViewコンポーネント(DemoView.cpp)によって処理され、その他のメニュー項目はメインアプリ(DemoApp.cpp)によって処理されます。追跡構造はメインアプリで定義されているので、メニュー項目(ビューによって処理される)が選択されたときに、ビューの親に特別なメッセージを通知する必要があると思います。

これが正しければ、私の問題は、適切な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)'

私はこれで助けていただければ幸いです

4

2 に答える 2

3

エラーによると、コールバック関数は CWnd から派生したクラスのメンバー関数である必要があります。CDemoApp を CWnd から派生させると、コードがコンパイルされて動作するはずです。

于 2010-11-16T11:01:45.293 に答える
0

変換について確信がある場合は、別のキャストを使用する必要があります。それは恐ろしいreinterpret_cast<>と呼ばれています。

于 2010-11-16T10:59:34.280 に答える