• VC++ 类CMFECToolTip类实现窗口的浮动提示效果


    参考文章:http://www.codefans.net/articles/1863.shtml

    源码下载:http://pan.baidu.com/s/1sjt0jEH

    VC++制作浮动的鼠标提示,当鼠标光标放在程序的某个控件上时,要想知道该控件的功能,最好的办法就是弹出一个提示框来显示这些信息。本例就是要介绍如何做浮动的鼠标提示。编译并运行本例程序,如下图所示。当鼠标光标放到某一个控件上时,就会显示如图的提示框,而且背景颜色可以在程序中设定。

    浮动的鼠标提示

    有一个类CMFECToolTip 可以实现浮动的鼠标提示功能。该类捕捉鼠标信息,如果当前鼠标光标位置有需要显示提示的控件,则在合适的位置显示提示窗口。使用该类很简单。先创建该类的一个对象,然后将需要显示提示条的控件的ID,要显示的文字和提示窗口的颜色等信息一一传递给它,最后只需在鼠标移动时显示它即可。程序代码为:
    (1)通过AppWizard生成基于对话框的应用程序InfoTip。
    (2)给对话框随便增加几个控件,本例增加的是静态文本框、编辑框、CComboBox控件和按钮,其ID分别为IDC_TEXT1、IDC_EDIT1、IDC_COMBO1、IDC_BUTTON1。
    (3)给对话框增加CMFECToolTip类型的成员变量m_toolTip。
    (4)将所有需要显示提示信息的控件信息告诉CMFECToolTip对象,在对话框的OnInitDialog()函数中完成。其代码如下:

    m_toolTip.Create( this );
    CStringArray straInfo;

    straInfo.RemoveAll();
    straInfo.Add( "Test Control" );
    straInfo.Add( "Test Control2" );
    m_toolTip.AddControlInfo( IDC_STATIC, straInfo, RGB(255,255,0) );

    (5) 重载消息响应: 1.在DLG文件中重载消息

    //{{AFX_VIRTUAL(CInfoTipDlg)
    public:
    virtual BOOL PreTranslateMessage(MSG* pMsg);
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL

      2. 添加然后在对话框的PreTranslateMessage( MSG *pMsg )函数中捕捉WM_MOUSEMOVE消息,其代码如下:

    BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
    {
        if( pMsg->message == WM_MOUSEMOVE )
        {
            POINT pt = pMsg->pt;   
            ScreenToClient( &pt );
            m_toolTip.ShowToolTip( (CPoint)pt );
        }
        return CDialog::PreTranslateMessage(pMsg);
    }

  • 相关阅读:
    课程设计之第二次冲刺----第一天
    第一个spring冲刺总结
    课程设计之第一次冲刺----第九天
    课程设计之第一次冲刺----第八天
    课程设计之第一次冲刺----第七天
    课程设计之第一次冲刺----第六天
    课程设计之第一次冲刺---第5天
    课程设计之第一次冲刺---第四天
    课程设计之第一次冲刺---第3天
    课程设计之第一次冲刺---第二天
  • 原文地址:https://www.cnblogs.com/yuqilihualuo/p/4096820.html
Copyright © 2020-2023  润新知