VS2010 MFC Dialog类的MENU菜单的单选、复选、菜单位图及右键弹出菜单教程(附源码)

新建空白工程:
免积分下载源码工程!搭配源码看文章
资源底部有源码,可以搭配源码来看。
在这里插入图片描述在这里,我不将空白对话框作为Menu菜单的窗口,我们新建一个窗口:

在这里插入图片描述右键添加AddResource ->MENU
在这里插入图片描述
依次类推:
我们给对话窗口添加一个类,方便我们做管理:
在这里插入图片描述

接下来给按钮添加响应,如图所示:
在这里插入图片描述选择我们刚才新建的对话类窗口:
在这里插入图片描述
菜单栏单选

void CTOOLBOXMENU::On32774()
{
	// TODO: 我们在ID_32774这个菜单上实现 单选。
	//我们的[菜单栏学习]->[打开]->子菜单是从32773 - 32778
    //例程-单选实现
   CMenu* menu = GetMenu()->GetSubMenu(0);    //获得菜单项的第0个子菜单 即[菜单栏学习]这一列
   menu->CheckMenuRadioItem(ID_32773, ID_32778, ID_32774, MF_BYCOMMAND);  //设置32774单选状态
}

去主文件中吧窗口切换到菜单栏学习窗口
在这里插入图片描述
去对话框窗口属性吧菜单栏选上
在这里插入图片描述
运行效果如下:
在这里插入图片描述接下来我们给32776添加一个一样的

void CTOOLBOXMENU::On32776()
{
	// TODO: Add your command handler code here
	//例程-选中类  //改为ID_32776为选中项
GetMenu()->GetSubMenu(0)->CheckMenuRadioItem(ID_32773, ID_32778, ID_32776,MF_BYCOMMAND);
}

运行效果如下:
在这里插入图片描述
菜单栏选中加√

2和4只能选中其中之一,不能实现多选。

接下来我们在[关闭]这一栏为按钮添加复选效果
步骤跟上述一样,代码如下:

void CTOOLBOXMENU::On32779()
{
// TODO: Add your command handler code here
//例程-复选框
CMenu* menu = GetMenu()->GetSubMenu(0);
menu->CheckMenuItem(ID_32779, MF_BYCOMMAND | MF_CHECKED);//通过命令ID,选中ID_32779 
}



void CTOOLBOXMENU::On32780()
{
// TODO: Add your command handler code here
//例程-复选框
CMenu* menu = GetMenu()->GetSubMenu(0);
menu->CheckMenuItem(ID_32780, MF_BYCOMMAND | MF_CHECKED);//通过命令ID,选中ID_32780
}

运行效果如下:
在这里插入图片描述

给菜单添加示例位图
在这里插入图片描述
代码如下:

BOOL CTOOLBOXMENU::OnInitDialog()
{
CDialogEx::OnInitDialog();

// TODO:  位图代码添加到这里
CMenu *pMenu=GetMenu();
CMenu *pSubMenu=pMenu->GetSubMenu(1);
 for(int i=0;i<3;i++)
 {
	 CBitmap bmpmenu;
	 bmpmenu.LoadBitmap(IDB_MENU);
	 pSubMenu->SetMenuItemBitmaps(i,MF_BYPOSITION,&bmpmenu,&bmpmenu);
      bmpmenu.Detach();
 }
// END: 位图代码结束

return TRUE;  // return TRUE unless you set the focus to a control
}

运行结果如下:
在这里插入图片描述

设计弹出式菜单
在这里插入图片描述

//弹出式菜单   右键
void CTOOLBOXMENU::OnRButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
 CMenu *Menu=GetMenu();
 ClientToScreen(&point);//将窗口坐标转换成屏幕坐标
 Menu->GetSubMenu(0)->TrackPopupMenu(
  TPM_LEFTBUTTON|TPM_VERTICAL,point.x,point.y,this);
 Menu->Detach();

CDialogEx::OnRButtonUp(nFlags, point);
}

效果如下图所示:
在这里插入图片描述
源码链接:源码连接及笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CDamogu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值