现在的位置: 首页 > 综合 > 正文

MFC对话框下的菜单使用setCheck

2013年08月04日 ⁄ 综合 ⁄ 共 2007字 ⁄ 字号 评论关闭

 

 

 

// MFCTestDlg.h : 头文件

//

 

#pragma once

 

 

// CMFCTestDlg 对话框

class CMFCTestDlg : public CDialog

{

// 构造

public:

CMFCTestDlg(CWnd* pParent = NULL); // 标准构造函数

 

// 对话框数据

enum { IDD = IDD_MFCTEST_DIALOG };

 

protected:

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

 

 

// 实现

protected:

HICON m_hIcon;

 

// 生成的消息映射函数

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

 

DECLARE_MESSAGE_MAP()

 

 

/*****************新添加部分**********************/

private:

BOOL m_bMute;


CMenu*     pMainMenu;

CMenu*     pSubMenu;



afx_msg void OnControlMute();

 

/*****************end新添加部分**********************/

};

 

 

 

 

然后再到CMFCTestDlg.cpp文件里的OnInitDialog加上

 

// CMFCTestDlg 消息处理程序

 

BOOL CMFCTestDlg::OnInitDialog()

{

CDialog::OnInitDialog();

 

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

 

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

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

ASSERT(IDM_ABOUTBOX < 0xF000);

 

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

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

}

}

 

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

//  执行此操作

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

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

 

// TODO: 在此添加额外的初始化代码

 

/*****************新添加部分**********************/

 

 

pMainMenu     =      new   CMenu;

pMainMenu->LoadMenuA(IDR_MENU1);  //  IDR_MENU1为菜单ID

 

pSubMenu     =     NULL;    

pSubMenu     =  pMainMenu->GetSubMenu(0); 

SetMenu(pMainMenu);

 

 

/*****************end新添加部分**********************/

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

 

}

 

BEGIN_MESSAGE_MAP(CMFCTestDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
 
//}}AFX_MSG_MAP
/*****************新添加部分**********************/
ON_COMMAND(ID_CONTROL_MUTE, &CMFCTestDlg::OnControlMute)
/*****************end新添加部分**********************/
END_MESSAGE_MAP()
/*****************新添加部分**********************/
void CMFCTestDlg::OnControlMute()
{
// TODO: 在此添加命令处理程序代码
m_bMute=!m_bMute;
pSubMenu->CheckMenuItem(ID_CONTROL_MUTE,m_bMute?MF_CHECKED:MF_UNCHECKED);    
}
/*****************end新添加部分**********************/

 

【上篇】
【下篇】

抱歉!评论已关闭.