Ошибка компилятора Static_cast в приложении C ++ sdi - PullRequest
3 голосов
/ 16 ноября 2010

У меня есть небольшое приложение 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)'

Буду признателен за любую помощь с этим

Ответы [ 2 ]

3 голосов
/ 16 ноября 2010

В соответствии с ошибкой, функция обратного вызова должна быть функцией-членом класса, производного от CWnd. Сделайте CDemoApp производным от CWnd, и ваш код должен скомпилироваться и работать.

0 голосов
/ 16 ноября 2010

Если вы уверены в конвертации, вам нужно использовать другой актерский состав. Это называется страшный reinterpret_cast <>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...