MFC工控项目实例之八选择下拉菜单添加打钩图标

承接专栏《MFC工控项目实例之七点击下拉菜单弹出对话框》

具体添加菜单栏参考我的博客文章《MFC工控项目实例之七点击下拉菜单弹出对话框》

这里只给出相关代码

1、在SEAL_PRESSUREDlg.h文件中添加代码

cpp 复制代码
class CSEAL_PRESSUREDlg : public CDialog
{
// Construction
public:
    ...
    CBitmap m_bmSel,m_bmList;
	void OnTypeChange(UINT nID);
	...
	}

2、在SEAL_PRESSUREDlg.cpp文件中添加代码

cpp 复制代码
BEGIN_MESSAGE_MAP(CSEAL_PRESSUREDlg, CDialog)
	//{{AFX_MSG_MAP(CSEAL_PRESSUREDlg)
	
	//}}AFX_MSG_MAP
	ON_COMMAND_RANGE(ID_DEF_PRODUCT, ID_DEF_PRODUCT + 100, OnTypeChange)
END_MESSAGE_MAP()


BOOL CSEAL_PRESSUREDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	...
	m_bmSel.LoadBitmap(IDB_BITMAP1);
	 m_bmList.LoadBitmap(IDB_BITMAP2);
	 m_menuType.LoadMenu(IDR_MENU1);	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CSEAL_PRESSUREDlg::OnTypeChange(UINT nID)
{
	theApp.m_nProductSel = nID - ID_DEF_PRODUCT+1;
	CWinApp* pApp = AfxGetApp();
    pApp->WriteProfileInt("参数","nProductSel1",theApp.m_nProductSel);

}

void CSEAL_PRESSUREDlg::OnTypChoice() 
{
	// TODO: Add your control notification handler code here
//	CTypDlg dlg;
//	dlg.DoModal();
		int	m_nActivePlace = 0;


	CRect rect;
	GetDlgItem(IDC_TYP_CHOICE)->GetWindowRect(&rect);
		while(m_menuType.GetSubMenu(0)->GetMenuItemCount() >2)
	{
		m_menuType.GetSubMenu(0)->RemoveMenu(2,MF_BYPOSITION);
	}
	for(int i = 0 ; i < theApp.m_allPara.GetSize() -1; i ++)
	{
		CString str;
		if(strlen(theApp.m_allPara[i + 1].m_strBrand) > 0)
			str.Format("%s(%s)",theApp.m_allPara[i + 1].m_strTypeName,theApp.m_allPara[i + 1].m_strBrand);
		else
			str.Format("%s",theApp.m_allPara[i + 1].m_strTypeName,theApp.m_allPara[i + 1].m_strBrand);
		m_menuType.GetSubMenu(0)->AppendMenu(MF_STRING,ID_DEF_PRODUCT + i,str);	
	    m_menuType.GetSubMenu(0)->SetMenuItemBitmaps(ID_DEF_PRODUCT + i, MF_BYCOMMAND, &m_bmList,&m_bmSel);
	}

		CWinApp* pApp = AfxGetApp();
    int  m_nProductSel=pApp->GetProfileInt("参数","nProductSel1",0);		
	m_menuType.GetSubMenu(0)->CheckMenuItem(2 + m_nProductSel - 1,MF_CHECKED|MF_BYPOSITION);
	m_menuType.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON,
	rect.left,rect.bottom,this);
}
相关推荐
旖-旎3 小时前
《LeetCode647 回文子串 || LeetCode 5 最长回文子串》
c++·算法·leetcode·动态规划·哈希算法
Darkwanderor3 小时前
对Linux的进程控制的研究
linux·运维·c++
云泽8084 小时前
从零吃透 C++ 异常:抛出捕获、栈展开、异常重抛与编码规范详解
开发语言·c++·代码规范
REDcker4 小时前
libdatachannel 快速入门
c++·webrtc·datachannel
second606 小时前
第一部分:快速上手 —— 建立 C++ 基本语法与编程范式
开发语言·c++
郝学胜-神的一滴6 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
bksczm6 小时前
linux之线程概念和控制
linux·开发语言·c++
hehelm7 小时前
Linux网络编程—TCP字典翻译系统
linux·开发语言·网络·c++·tcp/ip
hansang_IR7 小时前
【记录】「SCOI2016」三道模拟赛/26.7.12
c++·算法
浩浩测试一下7 小时前
windows 加壳工具代码实现02 - 加壳界面实现MFC
windows·mfc·免杀·加壳器·pe应用