c++ - BOOL CDialog::OnCommand(WPARAM wParam, LPARAM lParam) 的正确宏
问题描述
我正在将以前用 VS6 编译的应用程序移植到 VS2017。这是一段无法编译的代码:
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);
// ...
};
此声明匹配CWnd::OnCommand
so 的签名以覆盖它。
但是,似乎我需要使用其他宏而不是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);
}
解决方案
推荐阅读
- google-api - 我如何获得从我的应用程序产生的应用程序购买总收入?
- android - 如何在 Android 的 OkHttp 拦截器中处理 IOExceptions?
- .net - 从经典 .NET Framework 4.5 转换为 .NET 5.0
- symfony - 如何检查 symfony 服务器是否仍在运行?
- wpf - StackPanel.Orientation 的默认值是多少?
- python - NumPy:合并两个数组,以保存第一个数组中的所有值,但第二个数组中只有少数值
- linux - 如何在 KDE Plasma for Manjaro 中启用重音字符选项?
- c# - UnoPlatform Android 授予打开 USB 端口的权限
- php - VSCODE 缩进与 PHPIntellisense
- java - 在 Mac 上未安装 Java 问题