zoukankan      html  css  js  c++  java
  • Add dynamic tooltips to buttons in dialog(转)

    给对话框上的按钮加上动态的提示

    给按钮加上tooltip很简单:

    • 1 给按钮添加一个CTooltipCtrl变量

    class CTooltipButton : public CButton
    {
        …
    protected:
        CToolTipCtrl m_ctrlTip;
        …
    }

    • 2 设置这个tooltip:

    BOOL CTooltipButton::InitTooltip(int nStringID)
    {
        EnableToolTips();
        m_ctrlTip.Create(this,TTS_ALWAYSTIP);

        m_ctrlTip.SetMaxTipWidth(10000);
        m_ctrlTip.AddTool(this, nStringID);    
        m_ctrlTip.Activate(TRUE);

        return TRUE;
    }

    • 3 响应消息:

    BOOL CTooltipButton::PreTranslateMessage(MSG* pMsg)
    {
        m_ctrlTip.RelayEvent(pMsg);

        return CButton::PreTranslateMessage(pMsg);
    }

    实现一个动态的tooltip也很简单

    在调用AddTool时使用参数LPSTR_TEXTCALLBACK并在tooltip的parent响应TTN_NEEDTEXT(也就是TTN_GETDISPINFO)notify消息即可

    但是,如何给对话框中的按钮实现动态的提示呢?

    按理说把上面两篇文章介绍的方法综合一下就行了,然而发现行不通,因为作为tooltip的parent,应该在button中相应WM_NOTIFY消息。但是button不能接受到WM_NOTIFY消息,即使它是tooltip的owner window。

    怎么办?这个时候我的解决方法是把CTooltipCtrl从button中移到dialog中,让dialog成为tooltip的parent,而它可以得到WM_NOTIFY消息。

    超过80个字符的tooltip

    对于超过80个字符的tooltip,同样要用到LPSTR_TEXTCALLBACK,同样是响应WM_NOTIFY消息,这个时候,不能用button作为tooltip的parent。

  • 相关阅读:
    JS中原型链的理解
    CSS3的笔记总结
    那些牛掰的 HTML5的API(二)
    初识 HTML5(一)
    jQuery基础知识点(下)
    jQuery基础知识点(DOM操作)
    jQuery基础知识点(上)
    [译]GC专家系列2:Java 垃圾回收的监控
    [译]GC专家系列1: 理解Java垃圾回收
    [译]深入理解JVM
  • 原文地址:https://www.cnblogs.com/rainbowzc/p/1236859.html
Copyright © 2011-2022 走看看