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 + 数字), 查看类列表是否对应字节的对话框类,然后点击确定, 就可以使用了
完成后测试
点击菜单选项的控制下面的启动服务后: