怎样重载cstatic让static响应双击

解决方案 »

  1.   


    自己从CStatic派生一个类CMyStatic,重载其OnLDBCLick()(可在Classwizard中搞定),将你程序中原来CStatic类对象都改为CMyStatic类
      

  2.   

    在对话窗中给CStatic的控件加上Notify属性
      

  3.   

    控件直接画的对象,也可以这样,我类型换了以后,消息里还是没有lbuttonclick
    why?
      

  4.   

    void CStaticDbl::OnLButtonDblClk(UINT nFlags, CPoint point) 
    {
    CStatic::OnLButtonDblClk(nFlags, point);
    }
    在自己的类里加上这个就可以了吗?
      

  5.   

    本就没有WM_BUTTONCLICK的消息;消息里有WM_LBUTTONDOWN,WM_LBUTTONUP,
    WM_RBUTTONDOWN,WM_RBUTTONUP,WM_LBUTTONDBLCLK,WM_RBUTTONDBLCLK.
      

  6.   

    什么意思,现在我的对象已经换到新的类,但classwizard里这个控件还是只有bn_click消息,其他的都没有
      

  7.   

    我想你碰到的问题大概是dbclick时控件没收到消息的缘故,可以重载一下
    WM_NCHITTEST,这样static控件就会响应mouse了如下
    UINT C***::OnNcHitTest(CPoint point) 
    {
    // return CStatic::OnNcHitTest(point);
    return HTCLIENT;
    }
      

  8.   

    正常情况下,CStatic 控件把任何鼠标信息直接传给父窗口,设置SS_NOTIFY风格后,他自己才可以处理这些消息.
    用classwizard建立消息映射,在创建控件时使用SS_NOTIFY风格
      

  9.   

    在ClassWizard中,ClassName和Object IDs里选中你重载的CStaticDbl类,可以找到WM_LBUTTONDBLCLK事件,写好响应该事件的函数。
    在对话窗中声明控件的控制变量为CStaticDbl型即可。