如何在点击后给CStatic控件加上边框,在点击到控件后,想有一个反应,给控件加上一个边框什么的,让用户知道点中了哪个控件,应该怎么实现呢?

解决方案 »

  1.   

    如果是static控件,需要修改这个控件的ID,然后就可以按照常规操作了。确认notify是否被选中。
      

  2.   

    我做过点击一个Button这个控件之后,它会变成变成另一个,是给它加了图片,两张图片切换,不知道这个思路可不可以
      

  3.   

    应该是可行的!修改static的默认ID值,就可以操作它了
      

  4.   

    一般static 都和edit一起使用点击static edit获取焦点!
      

  5.   

    我是在Static上显示视频,点击后想表示选中了这个视频,加个边框
      

  6.   

    我现在写了这样一个函数
    void CCdfkDlg::DrawRect(CRect rect)
    {
    CDC* pDC=GetDC();
    pDC->SelectStockObject(BLACK_PEN);
    pDC->MoveTo(rect.left,rect.top);
    pDC->LineTo(rect.left,rect.bottom);
    pDC->LineTo(rect.right,rect.bottom);
    pDC->LineTo(rect.right,rect.top);
    pDC->LineTo(rect.left,rect.top);
    }然后再OnPait里面用
    GetDlgItem(IDC_STATIC2)->GetWindowRect(&rectL);//获取控件相对于屏幕的位置
    ScreenToClient(rectL);//转化为对话框上的相对位置
    rectL.left-=1;
    rectL.top-=1;
    rectL.right+=1;
    rectL.bottom+=1;
    获取控件的位置,在边缘画线。
    但是如果我调用 Invalidate(TRUE)的话,在开启视频后点击,线就画不出来,没开视频还可以实现
      

  7.   

    派生一个
    在OnPaint函数中
    void CMfcStatic::OnPaint()
    {
    CPaintDC dc(this); // device context for painting
    // TODO: 在此处添加消息处理程序代码
    // 不为绘图消息调用 CStatic::OnPaint()
            CRect rect;
           dc.MoveTo(rect.left,rect.top);
           dc.LineTo(rect.left,rect.bottom);
           dc.LineTo(rect.right,rect.bottom);
           dc.LineTo(rect.right,rect.top);
           dc.LineTo(rect.left,rect.top);
    }
      

  8.   

    “在开启视频后点击,线就画不出来,没开视频还可以实现”
    你那个 框 被 视频 覆盖了。static 本身要 有 框。那个 rect 不要 -1.
    到可以 试试 +1
      

  9.   

    但是有4个static,只能选中一个画边框
      

  10.   

    派生一个
    “但是有4个static,只能选中一个画边框”
    派生类中 用 GetDlgCtrlID()来区分 那一个
      

  11.   

    需要的那个用你自己派生的那个类,其他的用CStatic类