在一个对话框面板上有一些Editbox 我想当鼠标移动到某个Editbox是在屏幕上显示一个提示信息,如“请按Ctrl+Enter到下一行”。
请问怎么做到?

解决方案 »

  1.   

    获取控件的rect
    GetClient(rect);
    然后转化为屏幕坐标。
    鼠标响应函数有个坐标的返回,比较一下不就知道了
    当坐标在指定的范围内就可以弹出消息
      

  2.   

    最简单就是用CToolTipCtrl,可以直接从VC的控件库中插入。
      

  3.   

    让Edit响应WM_MOUSEMOVE消息,默认情况下Edit是不响应的具体办法如下
    派生一个自CEdit的类CNewEdit
    然后给你想响应鼠标移动的编辑框关联一个CNewEdit类型的变量
    最后给CNewEdit添加响应鼠标移动的消息即可
      

  4.   

    2楼的做法我试过了,但是那是弹出一个对话框,我想做的效果是在鼠标下方那样的显示一个提示信息,就想Word里面,当鼠标移动到一个图标上时,会在下方显示一些信息。3楼的我也试过,我想问下,下面是我的用法:
    m_subjectTip.Create(this,TTS_ALWAYSTIP|WS_POPUP|WS_EX_TOOLWINDOW);
    CRect rect;
    ((CEdit*)GetDlgItem(IDC_BUTTON_PREVIEW))->GetWindowRect(&rect);
    m_subjectTip.AddTool(this,"hello",rect,IDC_BUTTON_PREVIEW);
    m_subjectTip.Activate(1);
    m_subjectTip.ShowWindow(SW_SHOW);
    这样用了,并没有效果,请问用法对吗,或还差什么步骤?
    是否是CToolTipCtrl用于Editbox无效?
    先谢了!
      

  5.   

    初始化:
    // CG: The following block was added by the ToolTips component.
    {
    // Create the ToolTip control.
    m_tooltip.Create(this);
    m_tooltip.Activate(TRUE); // TODO: Use one of the following forms to add controls:
    // m_tooltip.AddTool(GetDlgItem(IDC_<name>), <string-table-id>);
    // m_tooltip.AddTool(GetDlgItem(IDC_<name>), "<text>");
    }
    BOOL CMFCTestDlg::PreTranslateMessage(MSG* pMsg)
    {
    // CG: The following block was added by the ToolTips component.
    {
    // Let the ToolTip process this message.
    m_tooltip.RelayEvent(pMsg);
    }
    return CDialog::PreTranslateMessage(pMsg); // CG: This was added by the ToolTips component.
    }