【MFC】【VS2019】添加菜单后在菜单上无法添加事件处理程序。菜单添加事件处理程序一直是灰的,点不了。

文章目录

  • 问题
  • 解决方案
    • 方法一 将菜单中的中文字符改成英文
    • 方法二 手动添加事件处理程序

问题

最近学校的数据库实验用MFC+VS2019写小型数据库管理程序,自学MFC,按以下步骤添加菜单跳转窗口时遇到了菜单添加事件处理程序一直是灰的,点不了的问题。
MFC插入MENU菜单栏并点击菜单弹出新窗口

菜单添加事件处理程序(A)点击不了
【MFC】【VS2019】添加菜单后在菜单上无法添加事件处理程序。菜单添加事件处理程序一直是灰的,点不了。_第1张图片

解决方案

方法一 将菜单中的中文字符改成英文

点不了的情况下,我的菜单上显示的caption是汉字关于,将Caption换成About之后菜单添加事件处理程序(A)可以点击,点击后就可选择相应逻辑
【MFC】【VS2019】添加菜单后在菜单上无法添加事件处理程序。菜单添加事件处理程序一直是灰的,点不了。_第2张图片
【MFC】【VS2019】添加菜单后在菜单上无法添加事件处理程序。菜单添加事件处理程序一直是灰的,点不了。_第3张图片

方法二 手动添加事件处理程序

首先在MysqlDlg.cpp(你想要添加事件处理的Dlg)中添加信息逻辑,
ON_COMMAND(1, &CMysqlDlg::OnAbout)
【MFC】【VS2019】添加菜单后在菜单上无法添加事件处理程序。菜单添加事件处理程序一直是灰的,点不了。_第4张图片
注意前一个参数1为Menu菜单窗口编辑的ID
具体步骤为:在窗口内点击右键,选择“编辑ID(E)”选项,为每个菜单按钮添加ID
【MFC】【VS2019】添加菜单后在菜单上无法添加事件处理程序。菜单添加事件处理程序一直是灰的,点不了。_第5张图片
后一个参数是跳转逻辑函数,这个函数也是添加在MysqlDlg.cpp(你想要添加事件处理的Dlg)中

void CMysqlDlg::OnAbout()
{
	// TODO: 在此添加命令处理程序代码
	About dig;
	dig.DoModal();
}

最后需要在MysqlDlg.h(你想要添加事件处理的Dlg头文件)中全局public添加afx_msg void OnAbout();
【MFC】【VS2019】添加菜单后在菜单上无法添加事件处理程序。菜单添加事件处理程序一直是灰的,点不了。_第6张图片

你可能感兴趣的:(经验)