2.11 工具提示控件典型实例
实例082 应用工具提示控件
这是一个可以提高基础技能的实例
实例位置:光盘\mingrisoft\02\082
实例说明
图2.49 应用工具提示控件
使用工具提示控件可以为控件添加提示,工具提示控件是一个弹出窗口,可以通过一行文本描述应用程序中的一个控件功能,本实例就使用工具提示为控件添加提示窗口,效果如图2.49所示。
技术要点
在使用工具提示控件时,需要使用Create、SetDelayTime、SetMaxTipWidth、AddTool、RelayEvent和UpdateTipText方法。
(1)Create方法。Create方法可以创建工具提示控件窗口。语法如下:
BOOL Create( CWnd* pParentWnd, DWORD dwStyle = 0 );
参数说明:
● pParentWnd:设置工具提示控件的父窗口。
● dwStyle:设置工具提示控件的风格,其中,工具提示控件的两种特定类风格如下。
■ TTS_ALWAYSTIP:当鼠标停留在工具上时,不管工具提示窗口所属的主窗口是否处于活动状态,都显示工具提示窗口。
■ TTS_NOPREFIX:禁止系统将&字符从字符串中去掉。
(2)SetDelayTime方法。SetDelayTime方法可以为工具提示控件设置延迟时间。语法如下:
void SetDelayTime( UINT nDelay ); void SetDelayTime( DWORD dwDuration, int iTime );
参数说明:
● nDelay:以毫秒表示延迟时间。
● dwDuration:要获取某一段持续时间值的标志。
● iTime:以毫秒表示指定延迟时间。
(3)SetMaxTipWidth方法。SetMaxTipWidth方法设置工具提示窗口的最大宽度。语法如下:
int SetMaxTipWidth( int iWidth );
参数说明:
● iWidth:工具提示窗口的宽度。
(4)AddTool方法。AddTool方法用于向工具提示控件注册一个工具,当鼠标停留在该工具上时,工具提示控件中的信息就会显示出来。语法如下:
BOOL AddTool( CWnd* pWnd, UINT nIDText, LPCRECT lpRectTool = NULL, UINT nIDTool = 0 ); BOOL AddTool( CWnd* pWnd, LPCTSTR lpszText = LPSTR_TEXTCALLBACK, LPCRECT lpRectTool = NULL, UINT nIDTool = 0 );
参数说明:
● pWnd:指向包含此工具窗口的指针。
● nIDText:包含工具文本的字符串资源ID。
● lpRectTool:一个指向RECT结构的指针,该结构包含工具的边界矩形坐标。
● nIDTool:工具ID。
● lpszText:设置的工具文本。
(5)RelayEvent方法。RelayEvent方法可以将鼠标消息传递给工具提示控件。语法如下:
void RelayEvent( LPMSG lpMsg );
参数说明:
● lpMsg:包含要传递消息的MSG结构指针。
(6)UpdateTipText方法。UpdateTipText方法用于为工具设置提示文本。语法如下:
void UpdateTipText( LPCTSTR lpszText, CWnd* pWnd, UINT nIDTool = 0 ); void UpdateTipText( UINT nIDText, CWnd* pWnd, UINT nIDTool = 0 );
参数说明:
● lpszText:设置的工具文本。
● pWnd:包含工具的窗口指针。
● nIDTool:工具的ID。
● nIDText:包含工具文本的字符串资源ID。
实现过程
(1)新建一个基于对话框的应用程序。
(2)向对话框中添加一个静态文本控件、一个编辑框控件、一个组合框控件和一个按钮控件。
(3)在对话框头文件中声明一个工具提示控件对象m_ToolTip。
(4)在对话框的OnInitDialog函数中创建工具栏对象,并注册工具信息,代码如下:
m_ToolTip.Create(this); //创建工具提示控件 m_ToolTip.SetDelayTime(1000); //设置延迟时间 m_ToolTip.SetMaxTipWidth(300); //设置工具提示窗口的最大宽度 m_ToolTip.AddTool(GetDlgItem(IDC_EDIT1),""); //注册编辑框控件 m_ToolTip.AddTool(GetDlgItem(IDC_BUTTON1),"按钮控件"); //注册按钮控件
(5)为对话框添加PreTranslateMessage虚方法,在该虚方法中设置鼠标消息的传递,并设置编辑框的提示信息,代码如下:
BOOL CToolTipControlDlg::PreTranslateMessage(MSG*pMsg) //虚方法 { m_ToolTip.RelayEvent(pMsg); //设置鼠标消息传递给提示控件 m_ToolTip.UpdateTipText("编辑框控件",GetDlgItem(IDC_EDIT1)); //设置编辑框的提示文本 return CDialog::PreTranslateMessage(pMsg); //调用基类的方法 }
举一反三
根据本实例,读者可以:
自定义工具提示控件。