Я портирую на VS2017 приложение, ранее скомпилированное с VS6.Вот фрагмент кода, который не компилируется:
BEGIN_MESSAGE_MAP(CVBindings, CDialog)
//{{AFX_MSG_MAP(CVBindings)
ON_COMMAND( IDC_BALT, OnCommand )
ON_COMMAND( IDC_BCONTROL, OnCommand )
// ...
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
Ошибка компилятора:
error C2440: 'static_cast': cannot convert from 'BOOL (__thiscall CVBindings::* )(WPARAM,LPARAM)' to 'AFX_PMSG'
note: None of the functions with this name in scope match the target type
Функция объявлена как:
class CVBindings : public CDialog {
// ...
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
// ...
};
Thisобъявление соответствует сигнатуре CWnd::OnCommand
, чтобы переопределить ее.
Однако, похоже, мне нужно использовать другой макрос, кроме ON_COMMAND
.Не могли бы вы предложить, какой и как его использовать?(Я совсем не знаком с MFC)
ОБНОВЛЕНИЕ: как указано в комментариях, ниже приведены фрагменты определения для CVBindings::OnCommand
:
BOOL CVBindings::OnCommand(WPARAM wParam, LPARAM lParam)
{
// ...
// Some logic using just LOWORD(wParam), returning TRUE in some cases
// ...
// Otherwise
return CDialog::OnCommand(wParam, lParam);
}