工具栏使用

来源:互联网 发布:农村淘宝站点查询 编辑:程序博客网 时间:2024/05/18 22:44

一、使用位图创建工具栏

1.头文件定义

CToolBar m_ToolBar;




2.BOOL CCreateToolBarDlg::OnInitDialog()

{// TODO: Add extra initialization hereUINT array[11];for (int i = 0;i<11;i++){if (i==3 || i==7 || i==9)array[i]= ID_SEPARATOR; //第4、8个按钮为分隔条elsearray[i]=i+1001;}m_ToolBar.Create(this);m_ToolBar.SetButtons(array,11);m_ToolBar.LoadBitmap(IDB_BITMAP1);  //加载位图m_ToolBar.SetSizes(CSize(24,24),CSize(16,16)); //设置按钮和按钮位图大小RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);return TRUE;  // return TRUE  unless you set the focus to a control}


3.添加消息响应



声明单击处理函数
afx_msg void OnNew();


添加消息映射
ON_COMMAND(1001, OnNew)


单击处理函数
void CCreateToolBarDlg::OnNew(){MessageBox("工具栏按钮单击事件");}


二、使用图标创建工具栏

1.头文件定义

CToolBar m_ToolBar;//工具栏对象CImageList m_ImageList;//列表视图对象


2.BOOL CCreateToolBarDlg::OnInitDialog()

{// TODO: Add extra initialization here//创建图像列表m_ImageList.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));UINT array[11];for(int i=0;i<11;i++){if(i==3 || i==7 || i==9)array[i] = ID_SEPARATOR; //第4、8、10个按钮为分隔条elsearray[i] = i+1001;}m_ToolBar.Create(this);m_ToolBar.SetButtons(array,11);//设置工具栏按钮的索引//关联图像列表m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);m_ToolBar.SetSizes(CSize(40,40),CSize(32,32)); //设置按钮和图标的大小RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);//显示工具栏return TRUE;  // return TRUE  unless you set the focus to a control}


三.使用工具栏资源创建工具栏


BOOL CCreateToolBarDlg::OnInitDialog(){// TODO: Add extra initialization here//创建工具栏m_ToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_SIZE_DYNAMIC | CBRS_BORDER_TOP);m_ToolBar.LoadToolBar(IDR_TOOLBAR1); //加载工具栏资源//设置图象和按钮的大小m_ToolBar.GetToolBarCtrl().SetBitmapSize(CSize(16,16));m_ToolBar.GetToolBarCtrl().SetButtonSize(CSize(24,24));RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);return TRUE;  // return TRUE  unless you set the focus to a control}


四、设置工具栏按钮提示

只要鼠标停留在一个工具栏按钮上,就会显示出这个按钮的功能描述
可以通过TTN_NEEDTEST消息的处理函数OnToolTipNotify实现,然后调用SetButtonText方法设置工具栏按钮文本

1.SetButtonText

BOOL SetButtonText(int nlndex,LPCTSTR lpszText);
nIndex:按钮命令ID
lpszText:按钮显示文本
然后在OnToolTipNotify消息处理函数中获得当前按钮文本,并在提示窗口中显示出来,获得按钮文本可以使用GetButtonText方法。

2.GetButtonText

CString GetButtonText(int nLndex)const;
void GetButtonText(int nIndex,CString&rString)const;
nIndex:按钮索引
rString:用于接收文本按钮


五、具有提示功能的工具栏

1.新建对话框,导入八个图标资源

2.对话框头文件声明变量

CToolBar m_ToolBar;CImageList m_ImageList;CString m_TipText;


3.对话框OnInitDialog创建工具栏



// TODO: Add extra initialization here//创建图像列表m_ImageList.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));UINT array[11];for(int i=0;i<11;i++){if(i==3 || i==7 || i==9)array[i] = ID_SEPARATOR; //第4、8、10个按钮为分隔条elsearray[i] = i+1001;}m_ToolBar.Create(this);m_ToolBar.SetButtons(array,11);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(10,"帮助");//关联图像列表m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);m_ToolBar.SetSizes(CSize(40,50),CSize(32,32)); //设置按钮和图标的大小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




4.对话框头文件声明OnToolTipNotyfy函数

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


5.添加映射

ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify)


6.添加处理函数

BOOL CToolTipDlg::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult){    TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;    UINT nID =pNMHDR->idFrom; //获取工具栏按钮ID    if(nID)    {UINT nIndex = m_ToolBar.CommandToIndex(nID); //根据ID获取按钮索引if(nIndex != -1){m_ToolBar.GetButtonText(nIndex,m_TipText);//获取工具栏文本//获取工具栏文本pTTT->lpszText = m_TipText.GetBuffer(m_TipText.GetLength()); //设置提示信息文本pTTT->hinst = AfxGetResourceHandle();//获取资源句柄return TRUE;}     }     return FALSE;}

7.代码

http://download.csdn.net/detail/greless/9854446


原创粉丝点击