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);                         //调用基类的方法
        }

举一反三

根据本实例,读者可以:

自定义工具提示控件。