我自己建了一个mybutton类,用来获取鼠标的左键按下释放事件
我需要将mybutton放置到一个dlg上
在鼠标左键按下时改变edt框的值,当鼠标松开后将edt框的值还原
edt的member variables是m_test
在mybutton类的OnLButtonDown事件中CXXXDlg(this->GetParent()).m_test = "sss";运行至这个的时候要提示错误请高手解决

解决方案 »

  1.   

    你这么写不对把,
    这么写要重新的生成一个临时的dialog对象,这个对象没有被create,就访问child,肯定会出错的。
    你这么写
    CXXXDlg * pParentDlg = dynamic_cast<CXXXDlg*>(this->GetParent());
    if( pParentDlg != NULL )
    {
        pParentDlg->m_test = "sss";
    }
      

  2.   

    不行呢,我试了下,这样字还是有问题,pParentDlg取不到值的
      

  3.   

    不知道你的button是怎么创建的,看看
      

  4.   

    现在不在办公室,
    MYButton是直接在CButton类上继承的,然后在Class中选中CMyButton 右键 选add windows message function?
    在向导里面增加的lbuttondown lbuttonup事件
      

  5.   

    搞编程技术,VC++,C#,JAVA,VB,可以加QQ群251623
      

  6.   


    #include "test0Dlg.h" //重要
    void CButtonEx::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    ((CTest0Dlg*)GetParent())->m_edit1s = ("dodd");
    ((CTest0Dlg*)GetParent())->UpdateData(FALSE);
    CButton::OnLButtonDown(nFlags, point);
    }void CButtonEx::OnLButtonUp(UINT nFlags, CPoint point) 
    {
    ((CTest0Dlg*)GetParent())->m_edit1s = ("eeeer");
    ((CTest0Dlg*)GetParent())->UpdateData(FALSE);
    CButton::OnLButtonUp(nFlags, point);
    }
      

  7.   

    你可以在mybutton响应OnLButtonDown消息的时候,发一个自定义的message给你的dialog,然后由你的dialog自己去相应的m_test   =   "sss ";就ok了。
    另外还可以在你的dialog里重载OnLButtonDown事件。
      

  8.   

    你的button被dn,up时可以向dlg发自定意消息(比如UM_BUTDN和UM_BUTUP)
    ,在dlg中实现这两个消息。
    这样可能更好。
      

  9.   

    我用postmessage的方式解决了
    直接引用的方式,学习中
      

  10.   

    to shunruo:
    问题是我的这个类要在test0Dlg.h中使用,不就是循环#include了么?
      

  11.   

    不会,这个是cpp,因为没有#include “xxx.cpp”。
    即使有,test0Dlg.h里的预定义保证也只包含一次