对话框工具栏的提示功能
功能展示
在文档视图的应用程序中,默认情况下,当要票在工具栏按钮上停留时,会出现一个工具提示条。但在对话框程序中,却没有这一功能,如何实现呢?此实例就实现了,效果如图
14.上位机VC MFC实现工具栏按钮在对话框中的提示功能
要点提示 要想使工具栏有提示功能,需要同时具备两个条件,一是工具栏具有CBRS_TOOLTIPS风格,这再工具栏创建时便可实现。二是工具栏的父窗口得处理TTN_NEEDTEXT通知消息,所以在文档视图结构的应用程序中,只要是工具栏在创建时,添加了CBRS_TOOLTIPS风格,就能够显示 提示信息。 如果我们在对话框中添加 TTN_NEEDTEXT,还得手动添加消息映射代码 ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipNotify) OnToolTipNotify是我们自定义气函数,原型如下
afx_msg BOOLOnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult ); 函数中 Id 是发送消息的控件ID,当前无用,因为控件ID可以来自Pnmhdr; pNMHDR 是一个NMHDR结构体指针,此结构体记录了发送消息的控件ID,句柄等信息;
pResult 表示结果代码指针, TTN_NEEDTEXT消息可以忽略此参数
实现功能
•1.新建一个对话框应用程序
•2.在对话框类中添加几个变量
• CToolBar m_wndToolBar;
• CString m_ToolText;
•3.添加一个工具栏资源IDR_TOOLBAR1 。
•4.在对话框类的OnInitDialog()中对这些变量进行初始化
•5.实现函数功能OnToolTipNotify()
• //设置图象和按钮的大小,为了适当的演示按钮文本
• m_wndToolBar.GetToolBarCtrl().SetBitmapSize(CSize(16,16));
• m_wndToolBar.GetToolBarCtrl().SetButtonSize(CSize(32,32));
• //设置按钮文本
• 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(10,"帮助");
• RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
•BOOL CGkbc8Dlg::OnToolTipNotify(UINTid, NMHDR *pNMHDR, LRESULT *pResult)
•{
• TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
• UINT nID =pNMHDR->idFrom; //获取工具栏按钮ID
• intindex = m_wndToolBar.GetToolBarCtrl().CommandToIndex(nID);//根据ID获取按钮索引
• m_wndToolBar.GetButtonText(index,m_ToolText);//获取按钮文本
• pTTT->lpszText=m_ToolText.GetBuffer(0);//设置显示的提示信息,可根据需要修改
• pTTT->hinst =AfxGetResourceHandle();
• return(TRUE);
•}
•6.最后当然是这函数对应的映射
• ON_NOTIFY_EX( TTN_NEEDTEXT, 0,OnToolTipNotify)
•下面我们演示整个功能实现的过程
源码及视频教程下载 (仅电脑上可见)
•
|