兄弟们,我有一个窗体,因为其title很长,所以显示不完整,我想在鼠标移到蓝色的titlebar上面的时候,给个tip,提示一下title的内容,怎么实现?
谁能解决,立马给200分,一次不够,给两次。

解决方案 »

  1.   

    基本上就算给个TIP,也是一行不能显示完成的,如果分成多行显示,好像也不是什么好主意.
    titlebar上面没有做过,不过你可以在statusBar上面可以.或者在界面的其他地方显示可能好看点.
      

  2.   

    可以做成没有标题栏的窗口
    然后用标签代替标题栏
    设上TIP属性
    就可以实现了比较笨,呵呵
      

  3.   

    那建议你还是加一个状态栏控件,显示在下面为好。
    System.Windows.Forms.StatusBar
      

  4.   

    以前做过不过不是 .net 后来感觉没什么用
    因为 我写的程序里没出现过这样的需求。给你点思路吧,我也没法现在给你写,如果看了下面的代码感觉
    为了这个功能,实现的麻烦程度以及操出了你的心理承受能力 那....
    有不明白的地方,QQ 65423574。 /// <summary>
    /// 重写 WndProc
    /// </summary>
    /// <param name="m"></param>
    protected override void WndProc(ref Message m)
    {
    const int WM_NCMOUSEHOVER=0x02A0; 
    const int WM_NCMOUSELEAVE=0x02A2;
    //上面两个消息 必须在 WM_NCMOUSELEAVE 消息里
    //Comctl32.dll 中的 _TrackMouseEvent API,触发。

    const int WM_NCMOUSEMOVE=0x00A0;
    // TODO:  添加 Form1.WndProc 实现
    if (WM_NCMOUSELEAVE==m.Msg)
    {
    /* 这是VC 的源代码 ,下面的调用后就会有,WM_NCMOUSEHOVER,WM_NCMOUSELEAVE
     * 消息
    if (!m_bTracking)
    {
    TRACKMOUSEEVENT tme;
    tme.cbSize = sizeof(tme);
    tme.hwndTrack = m_hWnd;
    tme.dwFlags = TME_LEAVE|TME_HOVER;
    tme.dwHoverTime = 1;
    m_bTracking = _TrackMouseEvent(&tme);  
    }
     */
    System.Diagnostics.Debug.WriteLine("WM_NCMOUSELEAVE");
    }
    else if(WM_NCMOUSELEAVE==m.Msg)
    {
    //这里调用 API 函数、调出 Tip
    //时间太长了,你到网上 找 TOOLINFO 相关的资料吧
    //找 API 的不要看 mfc 的就行,估计写出来 50 多行代码以内就可以搞定
    //要用的 API,CreateWindowEx,SetWindowPos,SendMessage 最少要用这么几个

    }
    base.WndProc (ref m);
    }