将工具栏设置成热点效果可以美化程序的界面。步骤不下
(1)创建一个基于对话框的应用程序。
(2)向对话框中添加一个按钮空间,并向程序中导入16个图标。
(3)在主窗口头文件中声明一个CToolBar类对象m_Toolbar和两个图像列表对象m_ImageList,m_HotImageList
其中,m_ImageList是工具栏按钮的图像列表对象,m_HotImageList是工具栏按钮的热点图像列表对象。
(4)在OnInitDialog函数中加载图标,关联图像列表,创建工具栏,代码如下
m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);
m_HotImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON8));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON9));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON10));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON11));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON12));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON13));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON14));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON15));
m_HotImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON16));
UINT array[10];
for (int i=0;i<10;i++)
{
if (i==3||i==7)
{
array[i]=ID_SEPARATOR;
}
else
{
array[i]=i+1001;
}
}
m_wndToolBar.CreateEx(this,TBSTYLE_FLAT);
m_wndToolBar.SetButtons(array,10);
m_wndToolBar.SetButtonText(0,"新建");
m_wndToolBar.SetButtonText(1,"打开");
m_wndToolBar.SetButtonText(2,"保存");
m_wndToolBar.SetButtonText(4,"剪切");
m_wndToolBar.SetButtonText(5,"复制");
m_wndToolBar.SetButtonText(6,"粘贴");
m_wndToolBar.SetButtonText(8,"打印");
m_wndToolBar.SetButtonText(9,"帮助");
m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&m_HotImageList);
m_wndToolBar.SetSizes(CSize(39,38),CSize(32,32));
m_wndToolBar.EnableToolTips(TRUE);//激活工具栏的提示功能,
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
为了显示提示信息,需要处理TTN_NEEDTEXT消息。
在对话框的消息映射部分添加ON_NOTIFY_EX映射宏,代码如下:
ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTipNotify)
添加消息处理函数OnToolTipNotify
//函数声明 afx_msg BOOL OnToolTipNotify(UNIT id,NMHDR* pNMHDR,LRESULT*pResult);
//函数定义:
BOOL CXJTU_MenuDlg::OnToolTipNotify(UINT id,NMHDR *pNMHDR,LRESULT* pResult)
{
TOOLTIPTEXT *pTTT=(TOOLTIPTEXT*)pNMHDR;
UINT nID=pNMHDR->idFrom;
if (nID)
{
nID=m_wndToolBar.CommandToIndex(nID);
if (nID!=-1)
{
m_wndToolBar.GetButtonText(nID,str);
pTTT->lpszText=str.GetBuffer(str.GetLength());
pTTT->hinst=AfxGetResourceHandle();
return(TRUE);
}
}
return(FALSE);
}