VS2019 MFC 工具栏增加ComBOX控件的方法和实例【一】

35 篇文章 7 订阅

 

.h头文件定义变量和创建函数 OnCreateToolBar()

1>CComboBox      m_TypeSelect;

2>CToolBar           m_DlgMainToolBar

3>CImageList        m_DlgToolBarIconList;//图标列表

4>afx_msg void OnCreateToolBar();

void CDoublePathWayReflowerControllerDlg::OnCreateToolBar()
{
	GetClientRect(rcClientOld);
	m_DlgToolBarIconList.Create(16, 16, TRUE | ILC_COLOR32, 20,6);
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICONCURVE)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICONCALIBRATION)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICONTEMALARM))); 
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICONUSERLOGIN)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICONSOFTWAREREGISTER)));
	/*m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON4)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON5)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON6)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON7)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON8)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON9)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON10)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON11)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON12)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON13)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON14)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON15)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON16)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON17)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON18)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON19)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON20)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON21)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON22)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON23)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON24)));
	m_DlgToolBarIconList.Add(LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ICON25)));*/

	/*if (!m_DlgMainToolBar.CreateEx(this,TBSTYLE_FLAT | TBSTYLE_WRAPABLE | TBSTYLE_ALTDRAG, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_ANY | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC, CRect(0, 0, 0, 0)) || !m_DlgMainToolBar.LoadToolBar(IDR_TOOLBARMAINWINDOWN))*/
	if (!m_DlgMainToolBar.CreateEx(this, TBSTYLE_TRANSPARENT | TBSTYLE_LIST /*| TBSTYLE_WRAPABLE | TBSTYLE_ALTDRAG*/,WS_CHILD | WS_VISIBLE| TBSTYLE_LIST | CBRS_ALIGN_ANY | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC, CRect(5, 25, 5, 5))||!m_DlgMainToolBar.LoadToolBar(IDR_TOOLBARMAINWINDOWN))
	
	{
		TRACE0("未能成功创建工具栏!\n");
		AfxMessageBox(_T("工具栏无法创建或创建失败!"), MB_ICONERROR | MB_ICONINFORMATION);
		printf("OnCreateToolBar->工具栏栏创建失败!\n");
		MessageBox(_T("OnCreateToolBar->工具栏栏创建失败\n!"), _T("信息提示!"), MB_OK | MB_OKCANCEL | MB_ICONINFORMATION);
	}

	m_DlgMainToolBar.ShowWindow(SW_SHOW);

	if (m_DlgMainToolBar.GetSafeHwnd() != NULL)
	{   
		m_DlgMainToolBar.GetToolBarCtrl().SetImageList(&m_DlgToolBarIconList);
		m_DlgToolBarIconList.Detach();
		//m_DlgMainToolBar.GetToolBarCtrl().SetHotImageList(&m_DlgToolBarIconList);
		VERIFY(m_DlgMainToolBar.SetButtonText(0, _T("温度曲线 ")));
		VERIFY(m_DlgMainToolBar.SetButtonText(1, _T("温度校准")));
		VERIFY(m_DlgMainToolBar.SetButtonText(2, _T("温度报警")));
		VERIFY(m_DlgMainToolBar.SetButtonText(3, _T("用户登录")));
		VERIFY(m_DlgMainToolBar.SetButtonText(4, _T("软件注册")));
		/*VERIFY(m_DlgMainToolBar.SetButtonText(3, _T("Close")));
		VERIFY(m_DlgMainToolBar.SetButtonText(4, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(5, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(6, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(7, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(8, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(9, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(10, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(11, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(12, _T("Draw")));

		VERIFY(m_DlgMainToolBar.SetButtonText(13, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(14, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(15, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(16, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(17, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(18, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(19, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(20, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(21, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(22, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(23, _T("Draw")));
		VERIFY(m_DlgMainToolBar.SetButtonText(24, _T("Draw")));*/

		nCount = m_DlgMainToolBar.GetCount();
		for (int i = 0; i < nCount; i++)
		{
			m_DlgMainToolBar.SetButtonStyle(i, TBBS_BUTTON);
		}
		/*Create ComBox*/
		int m_Index = 5;
		int m_With = 125;
		CRect m_Rect;
		m_DlgMainToolBar.SetButtonInfo(m_Index, IDC_BUTTON_CONBOX, TBBS_SEPARATOR, m_With);
		int m_height = 16;
		m_DlgMainToolBar.GetItemRect(5, &m_Rect);
		m_Rect.top = 0;
		m_Rect.bottom = m_Rect.top + m_height;
		m_TypeSelect.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_SORT | CBS_DROPDOWNLIST,
			m_Rect, &m_DlgMainToolBar, 3000);
		m_TypeSelect.AddString(_T(" item0 "));
		m_TypeSelect.AddString(_T(" item1 "));
		m_TypeSelect.AddString(_T(" item2 "));
		m_TypeSelect.AddString(_T(" item3 "));
		m_TypeSelect.AddString(_T(" item4 "));
		m_TypeSelect.SetCurSel(4);
		/*Create ComBox End*/
		CRect temp;
		m_DlgMainToolBar.SetBarStyle(CBRS_ALIGN_ANY | CBRS_TOOLTIPS | CBRS_GRIPPER | CBRS_FLYBY | CBRS_SIZE_DYNAMIC | BTNS_SHOWTEXT | CBRS_FLOATING );
		m_DlgMainToolBar.GetItemRect(0, &temp);
		m_DlgMainToolBar.GetToolBarCtrl().SetButtonSize(CSize(temp.Width(), temp.Height()));
		m_DlgMainToolBar.SetSizes(CSize(temp.Width(), temp.Height()), CSize(16, 16));
		m_DlgMainToolBar.ModifyStyle(0, BTNS_SHOWTEXT | TBSTYLE_EX_MULTICOLUMN | WS_CLIPCHILDREN | TBSTYLE_AUTOSIZE);
		m_DlgMainToolBar.ModifyStyleEx(0, TRANSPARENT);
		m_DlgMainToolBar.SetBorders(5, 25, 5, 5);
		//rcClientNew.top=rcClientNew.top - 20;

		RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0, reposQuery, rcClientNew);
		RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

	}

}

 参考文献:后期重绘慢慢更新

https://www.codeproject.com/Articles/2726/Toolbars-with-embedded-Combo-Boxeshttps://www.codeproject.com/Articles/2726/Toolbars-with-embedded-Combo-Boxes

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值