MFC添加菜单资源,绑定菜单事件函数

MFC添加菜单资源,绑定菜单事件函数

MFC添加菜单:

1 解决方案下->项目,右键添加->资源, 选择菜单, 创建菜单,并记住ID:

2 在要绑定菜单的窗口类的xxxDlg.h文件中添加 菜单类:

// CNewGameGateDlg 对话框

class CNewGameGateDlg : public CDialogEx

{

// 构造

public:

CNewGameGateDlg(CWnd* pParent = nullptr); // 标准构造函数

// 对话框数据

#ifdef AFX_DESIGN_TIME

enum { IDD = IDD_NEWGAMEGATE_DIALOG };

#endif

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持

// 实现

protected:

HICON m_hIcon;

CMenu m_menu; // 添加菜单项

// 生成的消息映射函数

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

DECLARE_MESSAGE_MAP()

};

3 在要绑定菜单的窗口类xxxDlg.cpp文件的OnInitDialog()添加:

//1 首先引入菜单资源

#include "resource.h"

// CNewGameGateDlg 消息处理程序

BOOL CNewGameGateDlg::OnInitDialog()

{

CDialogEx::OnInitDialog();

// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != nullptr)

{

BOOL bNameValid;

CString strAboutMenu;

bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);

ASSERT(bNameValid);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动

// 执行此操作

SetIcon(m_hIcon, TRUE); // 设置大图标

SetIcon(m_hIcon, FALSE); // 设置小图标

// 这两行是要添加的 菜单

m_menu.LoadMenu(IDR_MENU1);//加载菜单资源

SetMenu(&m_menu); //将菜单至于对话框

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE

}

4 添加事件

点击要添加事件处理的选项, 右键, 添加事件子程序, 起名字后(默认的名字是On + 数字), 查看类列表是否对应字节的对话框类,然后点击确定, 就可以使用了

完成后测试

点击菜单选项的控制下面的启动服务后:

相关推荐