我重载了一个类CMyStatic,然后用这个类创建了一个对象,在这个类中我加入了鼠标双击消息响应,想让鼠标双击时创建的控件能够消失,但是我怎么双击控件都不消失,怎么回事呢?
这是我的消息响应函数:
void CMyStatic::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
this->ShowWindow(FALSE);
CStatic::OnLButtonDblClk(nFlags, point);
}

解决方案 »

  1.   

    this->ShowWindow(SW_HIDE);也不管用
      

  2.   

    我又试了试,发现倒是消失了,但是窗口不能自动刷新,加上
    InvalidateRect(CRect (80,80,m_iClientW-80,(m_iClientH/2-50)+80),0);
    基本上没效果
      

  3.   

    你的InvalidateRect(CRect (80,80,m_iClientW-80,(m_iClientH/2-50)+80),0);错了吧?void CMyStatic::OnLButtonDblClk(UINT nFlags, CPoint point) 

            // TODO: Add your message handler code here and/or call default  
            this->ShowWindow(FALSE); 
    CRect rc;
    GetWindowRect(rc);
    GetParent()->ScreenToClient(rc);
    GetParent()->InvalidateRect(rc);
            CStatic::OnLButtonDblClk(nFlags, point); 
    }
      

  4.   

    其实将这个双击响应函数放到控件所在的对话框中即可,不过记得给控件加属性“Notify”
      

  5.   

    双击响应原来是在控件所在的视图中,是我加上Notify之后双击相应就不行了,而且即便是放在视图中,还要判断鼠标点击的是不是控件的范围,比放在控件中要麻烦
      

  6.   

    ShowWindow(SW_HIDE);只是把自己隐藏起来,它并不管主窗口的事.要刷新主窗口,除非是主窗口自己有了变化才会自动刷新,否则就得你自己去刷新!!
      

  7.   

    我从CSTATIC继承了一个类,创建的时候加上SS_NOTIFY属性,然后在继承的类中响应双击,是不需要手动刷新的,响应双击的代码就是void CMyStatic::OnLButtonDblClk(UINT nFlags, CPoint point) 

    // TODO: Add your message handler code here and/or call default  
    this->ShowWindow(FALSE); CRect rc; GetWindowRect(rc); 
    GetParent()->ScreenToClient(rc); GetParent()->InvalidateRect(rc); 
    CStatic::OnLButtonDblClk(nFlags, point); 
    }
      

  8.   

    用SendMessage向主窗口发送WM_PAINT消息。