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
}
在.h文件里声明消息:
afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
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);
}