按钮弹出式菜单子菜单选中实时显式打钩图标实例(源码下载)MFC菜单系列三

本程序基于前期我的博客文章《鼠标选择菜单序号实时保存到INI文件实例(源码下载)MFC菜单系列二》
原文链接:https://blog.csdn.net/weixin_42350092/article/details/130716071?spm=1001.2014.3001.5502
程序功能:用鼠标点击菜单按钮弹出主菜单,选择子菜单时图标符号由感叹号实时改为打钩图标。选中的子菜单序号保存在windows目录下的应用程序名称.ini文件中,下次运行程序时出现的是最后一次选择的打钩图标子菜单。

将菜单感叹号图标、打钩图标保在项目文件下的res文件下。
在这里插入图片描述
在这里插入图片描述
在资源视图选中选中文件右键鼠标,插入感叹号、打钩图标图片ID名称为IDB_BITMAP_MENU_TYPE_LIST、IDB_BITMAP_MENU_TYPE_SEL。
在这里插入图片描述
1、在MenuButtonDlg.h头文件中添加代码

CBitmap m_bmSel,m_bmList;

2、在MenuButtonDlg.cpp 初始化函数BOOL CMenuButtonDlg::OnInitDialog()中添加代码

m_bmSel.LoadBitmap(IDB_BITMAP_MENU_TYPE_SEL);
m_bmList.LoadBitmap(IDB_BITMAP_MENU_TYPE_LIST);

3、菜单按钮单击事件代码

void CMenuButtonDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	CRect rect;
	GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rect);	
	
int cntSub =  menu->GetMenuItemCount();
for(int j = 1; j < cntSub; j++)
		{
			
				menu->CheckMenuItem(j, MF_BYPOSITION | MF_UNCHECKED);
				menu->SetMenuItemBitmaps( j, MF_BYPOSITION , &m_bmList,&m_bmSel);
		} 
	
CWinApp* pApp = AfxGetApp();
 int menuId=pApp->GetProfileInt("菜单", "子菜单序号", 0);
menu->CheckMenuItem( menuId,MF_CHECKED|MF_BYPOSITION); 	
menu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON,
	   rect.left,rect.bottom,this);
}

运行程序
在这里插入图片描述
源码下载
https://download.csdn.net/download/weixin_42350092/87795386

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

兵哥工控

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

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

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

打赏作者

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

抵扣说明:

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

余额充值