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);
}

时间: 2024-07-30 12:55:28

VC++ 类CMFECToolTip类实现窗口的浮动提示效果的相关文章

VC CreateWindow 找不到窗口类

VC CreateWindow 找不到窗口类,有提示是因为没有调用RegisterClass注册窗口类,可是我已经使用RegisterClassEx注册了! //函数:MyRegisterClass //作用:注册窗口类 ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEX wndclass; wndclass.cbSize = sizeof(wndclass); wndclass.style = CS_HREDRAW | CS_VREDR

MFC注册窗口类以及FindWindow按窗口类名查询(避免用#32770获取窗口句柄)

呵呵,最近在研究SendMessage函数,其中需要用到m_hWnd,之后延伸着又尝试获得窗口的句柄,于是遇到了FindWindow函数,原型如下: HWND FindWindow ( LPCSTR lpClassName,    //输入窗口的类名,其实需要是注册过的类名才行,否则是要报错或者查找失败的. LPCSTR lpWindowName, //输入窗口的名称,就是窗口上面蓝色的那行玩意儿写的字. ); 对于这个函数,如果按照窗口的名称查找,相信大家都非常简单,因为名称在rc文件里,是已

CRectTracker类的使用--橡皮筋窗口

CRectTracker(俗称"橡皮筋"类)是一个非常有意思的类.你在Windows中经常看到这样的情况:它可以用做显示边界,你也可以扽它的八个角用来放大缩小,或做框选使用.如何通过编程来实现这种功能呢?这就是CRectTracker类的作用:  (框选)                         (显示边界并可以缩放) 你打开上面的那个工程文件,编译运行一下.你将看到CRectTracker的几种功能: 下面让我们来从头做一个新的工程文件,来慢慢掌握它的功能吧. 建立一个单文档

VC 串口通信类

为了节省时间,我就贴出来吧 头文件 SerialPort.h 1 /*************************************************************************************************** 2 * SerialPort.h 3 * 4 * 功 能:串口通讯类 5 * 类 名:CSerialPort 6 * 7 * Ver 变更日期 负责人 变更内容 8 * ───────────────────────────────

CanVas类(绘图类)

知识点: Canvas():创建一个空的画布,可以使用setBitmap()方法来设置具体的画布 Canvas(Bitmap bitmap):以bitmap对象创建一个画布,则将内容都绘制在Bitmap上,因此bitmap不能为Null Canvas(GL gl):在绘制3D效果时使用,与OpenGL相关 drawColor:设置背景颜色 setBitmap:设置画布 clipRect:设置显示区域,即设置裁剪部分 isOpaque:是否支持透明度 rotate:旋转画布 setViewport

CWinApp类CMultiDocTemplate类CDocument类CView类的关系

转自:http://blog.csdn.net/bboot/article/details/26884011 不得不转,瞬间搞清了很多问题,短小精悍 1.CWinApp类   它包含并管理着应用程序的文档/视窗的所有信息.它有一个成员变量CDocManager*m_pDocManager,此变量是文档/视窗的管理器:m_templateList 是CDocManager里的一个列表,此列表里保存了所有文档模板的指针,当用户调用CWinApp::AddDocTemplate(pDocTemplat

动态类(类工厂)总结

动态类(类工厂)总结 一.动态类的作用 动态类应用的一个类似的例子便是MFC中CWnd类的Create方法,其第一个参数为Window Class的名字,这就允许用户通过class的名字来创建相应的窗口.C++不是动态语言,所以没法从语言机制上实现类的动态创建,但很明显这样的需求是存在的. 要想实现这一点,必须有一个“管理中心”,用于登记类的名字,并且通过名字能够调用某个方法来创建相应的类.结合类工厂的设计思想,这里我们让一套继承体系中的基类作为“管理中心”,由它来维护所有派生类的必要信息,包括

类型转换,类与类之间的转换,继承关系,继承与静态变量,子类父类重名,多继承,虚基类

 常量的基本类型转换,例如:int num(10.8),这种方式是隐式转换. 通过函数的构造函数实现转换. 类类转换函数,当构造函数不能将类型转换成基本类型时.所以就有了类类转换函数,通过这种方式. 案例: #include <iostream> class fushu { public: //通过加explicit的这种方式避免隐式转换,避免引发歧义 explicit fushu(int num) { x = num; y = num; } void print() { std::cou

java类Date类概述及其方法

1.Date类概述 类Date表示特定的瞬间,精确到毫秒 2.构造方法 public Date() public Date(long date) 3.成员方法 public long getTime() public void setTime(long time) package com; import java.util.Date; /**  * Date类概述  *  Date类表示特定的瞬间,精确到毫秒  *   * 构造方法  *  public Date()  *  public Da