MFC CTooLBar 工具栏显示提示信息ToolTip

公羊嘉
2023-12-01

CTooLBar 工具栏显示提示信息ToolTip,首先添加Toolbar控件,网上有多种实现方式,推荐两种:

一:

在资源里添加ToolBar控件,在对话框OnInitDialog里关联,设置:

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

.............
	m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_VISIBLE|WS_CHILD|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC|CBRS_BORDER_TOP);
	m_wndToolBar.LoadToolBar(IDR_TOOLBAR1);		//加载工具栏资源
	m_wndToolBar.GetToolBarCtrl().SetBitmapSize(CSize(102,48));		//设置图像大小
	m_wndToolBar.GetToolBarCtrl().SetButtonSize(CSize(102,48));		//设置工具栏图标按钮的大小
	//显示工具栏
	RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);


	INIT_EASYSIZE; 

	return TRUE;
}

二:

直接代码生成ToolBar,也是在OninitDialog中添加如下代码:

BOOL CToolTipDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	
	// TODO: Add extra initialization here
	UINT array[10];
	for (int i = 0;i<10;i++)
	{
		if (i==3 || i==7)
			array[i]= ID_SEPARATOR; //第4、8个按钮为分隔条
		else
			array[i]=i+1001;
	}
	m_ToolBar.Create(this);
	m_ToolBar.SetButtons(array,10);
	m_ToolBar.SetButtonText(0,"新建");
	m_ToolBar.SetButtonText(1,"打开");
	m_ToolBar.SetButtonText(2,"保存");
	m_ToolBar.SetButtonText(4,"剪切");
	m_ToolBar.SetButtonText(5,"复制");
	m_ToolBar.SetButtonText(6,"粘贴");
	m_ToolBar.SetButtonText(8,"打印");
	m_ToolBar.SetButtonText(9,"帮助");
	m_ToolBar.LoadBitmap(IDB_BITMAP1);			   //加载位图
	m_ToolBar.SetSizes(CSize(36,36),CSize(16,16)); //设置按钮和按钮位图大小
	m_ToolBar.EnableToolTips(TRUE);
	RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); //显示工具栏
	return TRUE;  // return TRUE  unless you set the focus to a control
}

设置好了,添加工具栏ToolTip:

在.h文件里声明消息:

	afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );

在.cpp下关联消息

BEGIN_MESSAGE_MAP(CWeldTechnologyDlg, CDialogEx)
	

	ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify)
END_MESSAGE_MAP()

添加响应代码:

BOOL CWeldTechnologyDlg::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{
	TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
	CString str;
	UINT nID =pNMHDR->idFrom; //获取工具栏按钮ID
	if(nID)
	{
		nID = m_wndToolBar.CommandToIndex(nID); //根据ID获取按钮索引
		if (nID != -1)
		{
			switch(nID)
			{
			case 0:
				pTTT->lpszText  = L"中心点设置";
				break;
			case 1:
				pTTT->lpszText  = L"焊板设置";
				break;
			case 2:
				pTTT->lpszText  =L"焊层设置";
				break;
			case 3:
				pTTT->lpszText  =L"焊道工艺设置";
				break;
			case 4:
				pTTT->lpszText  =L"生成焊点轨迹";
				break;
			default:
				pTTT->lpszText = L" ";
				break;

			}

			//获取工具栏文本			
			pTTT->hinst = AfxGetResourceHandle();
			return(TRUE);
		}
	}
	return(FALSE);
}






 类似资料: