zoukankan      html  css  js  c++  java
  • 用 Windows API实现自己的多行文本的ToolTip

    CToolTipCtrl使用的时候,需要在窗口的PreTranslateMessage中调用它的DelayEvent.
    但 是有时候我们的窗口中的PreTranlateMessage不会被调用,那怎么办?

    1. 调用CreateWindowEx创建自己的ToolTip窗口,并作相应的设置

        
    ::InitCommonControls();
          hToolTip = ::CreateWindowEx(0, “tooltips_class32”,
    _T(""), TTS_ALWAYSTIP, 0, 0, 0, 0, hWnd, 0,
    ::AfxGetApp()->m_hInstance, 0);

          LONG delayTime;
          delayTime = 20000;
      
          ::SendMessage(hToolTip, TTM_SETMAXTIPWIDTH, 0,
    240);
          ::SendMessage(hToolTip, TTM_SETDELAYTIME, (ttDelayReshow
    & ttDelayMask), delayTime);

    2.  为需要显示ToolTip的字窗口添加ToolTip

      
    TOOLINFO ti;
       ti.cbSize = sizeof(ti);
       
       if( !GetToolTipInfo(hSubWnd, ti) )
       {
            ti.cbSize = sizeof(ti);
            ti.uFlags = TTF_SUBCLASS |
    TTF_IDISHWND;
            ti.hwnd = hParent;
            ti.uId = (long)hSubWnd;
            ti.lpszText = NULL;
            ::SendMessage(hToolTip, TTM_ADDTOOL,
    0, (LPARAM)&ti);

    }

    3. 设置需要显示的ToolTip文本

      TOOLINFO
    ti;
        if( GetToolTipInfo(hSubWnd, ti) )
        {

           
    ti.lpszText = new TCHAR[strText.GetLength()+1]; //
    之前在strText 中插入相应的位置换行符
            wcscpy(ti.lpszText,
    strText.GetBuffer());
            ::SendMessage( hToolTip,
    TTM_UPDATETIPTEXT, 0, (LPARAM)&ti );
            delete[] ti.lpszText;

       
    }

     

    其中GetToolTipInfo可以这样实现:

     
    nItems = ::SendMessage(hToolTip, TTM_GETTOOLCOUNT, 0, 0);

     
    for( i = 0; i<nItems; i++ )
      {
         if( ::SendMessage(hToolTip, TTM_ENUMTOOLS, i,
    (LPARAM)&ti) )
        {
            if( ti.uId == (long)hWnd)
            {
                return TRUE;
            }
        }
      }

      return FALSE;

  • 相关阅读:
    lua学习项目笔记
    Jenkins 安装、配置与项目新建及构建
    Gitlab的安装及项目新建
    PHP常见排序算法
    抽象类和接口的区别
    分布式版本控制系统Git的安装及使用
    深入解析OpenCart的代理类proxy
    PHP模式设计之单例模式、工厂模式、注册树模式、适配器模式、观察者模式
    linux命令行传递参数定期执行PHP文件
    php类中的$this,static,const,self这几个关键字使用方法
  • 原文地址:https://www.cnblogs.com/caoshenghe/p/1844947.html
Copyright © 2011-2022 走看看