小弟小菜一个,初学,愚昧. 高手见笑!
vs2008 Static Text 控件怎么添加 Mousemove消息?

解决方案 »

  1.   

    MouseMove是添加在对话框响应消息的,不是在控件上的。
    不知道你要干什么,假如你要在鼠标移动到字上改变字的颜色或者其他,你可以响应当鼠标移动消息,如果满足在有static text的周围一段的矩形区域内移动,则做出相应的改变即可
    而不是给控件添加MouseMove,是给有控件的对话框添加
      

  2.   


    能不能留一下代码,菜鸟菜鸟,嘿嘿,谢谢哦. 我是想移动到static text上面的时候修改鼠标指针为手型
      

  3.   

    响应MW_SETCURSOR事件,同时把静态文本属性中的notify设置为TRUE
    BOOL CYourDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
    {
    // TODO: Add your message handler code here and/or call default
    if(pWnd->GetDlgCtrlID() == IDC_STATIC1)
    {
    SetCursor(::LoadCursor(NULL, IDC_HAND));
    return TRUE;
    }
    return CDialog::OnSetCursor(pWnd, nHitTest, message);
    }
      

  4.   

    方法1、可以自己写个类,继承CStatic(即自定义控件),在里面添加MouseMove处理,替换原来的Static控件方法2、响应对话框的MouseMove消息,通过判断鼠标是否在Static Text区域内来改变鼠标形状void CDlialog1::OnMouseMove(UINT nFlags, CPoint point)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    CRect rc;
            // IDC_STATIC1为静态文本的ID号,此处获取其相对屏幕的位置
    GetDlgItem(IDC_STATIC1).GetWindowRect(&rc);
    ScreenToClient(&rc); //转换成相对对话框的位置
    if ( rc.PtInRect(point) ) //判断鼠标是否在Static Text内
    SetCursor(LoadCursor(NULL,IDC_HAND));
    else SetCursor(LoadCursor(NULL,IDC_ARROW));
    CDialog::OnMouseMove(nFlags, point);
    }
      

  5.   

    COPY楼上朋友的代码,  编译的时候GetDlgItem(IDC_STATICREG).GetWindowRect(&rc);这句出现
    1108) : error C2228: left of '.GetWindowRect' must have class/struct/union
    1>        type is 'CWnd *'
    1>        did you intend to use '->' instead?
      

  6.   

    写错了,是用"->", 这个主要是为了获取IDC_STATICREG在对话框中的相对位置,其实楼主也可以对话框初始话的时候就获取,或者自已设置,定义个成员变量就行了