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。

  • 相关阅读:
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    项目章程
    Android 开发环境的搭建(新环境)
    java中八种基本数据类型以及它们的封装类,String类型的一些理解
    一品黄山 天高云淡
    一品黄山 天高云淡
    黄山的日出日落
    宏村,寻找你的前世今生
    宏村,寻找你的前世今生
    git把本地文件上传到github上的步骤
  • 原文地址:https://www.cnblogs.com/rainbowzc/p/1236859.html
Copyright © 2011-2022 走看看