子类怎么改变父类变量的值呀?

解决方案 »

  1.   

    如果是public继承的可以直接访问。
      

  2.   

    外面的对话框保存一个变量value,
    然后声名一个方法setValue修改这个变量在弹出的对话框里保存一个对父窗口对话框的指针pParentDialog
    然后在子窗口的值改变的同事,调用pParentDialog->setValue(...)
      

  3.   

    CYOURDLG dlg;
    if(dlg.DoModal()==IDOK){
    name=dlg.name;
    text=dlg.text;}假设你现在的对话框有变量name和text,在CYOURDLG类里面也有name和text这两个变量,在dlg 里面把你要传送的数据保存在name和text就可以了.当它按确定键返回后便可以.
      

  4.   

    我同意ralphvsclark(微笑)的做法
      

  5.   

    GetParent()->  后没有setValue(...)函数呀!!
      

  6.   

    class CSupplyShopList : public CDialog
    {
    // Construction
    public:
    void SetValue(CString sField);在一按钮中
    CSupplyShopListSeach dlg
    dlg.DoModul();
    ==========================================
    CSupplyShopListSeach 类中 GetParent()->SetValue("dd");error C2039: 'SetValue' : is not a member of 'CWnd'
    ===========================================
      

  7.   

    楼上的你试过没,GetParent能起作用?!
      

  8.   

    GetParent有这个函数呀........SetValue则说这个没有定义
      

  9.   

    你的GetParent返回的是一个CWnd类指针
    你强制转化一下((CParDialog*) GetParent())->SetValue(...);
      

  10.   

    我的例子:
    VOID CStationeryDlg::OnButtonCreate()
    {
    CNewStationeryDlg dlgNew;
    if(dlgNew.DoModal()==IDOK && !dlgNew.m_strName.IsEmpty()) 
    {
    ASSERT(!dlgNew.m_strName.IsEmpty() && dlgNew.m_strName.Find('\\')==-1 && dlgNew.m_strName.Find('/')==-1); CONST CStnryArray& arrStnry = m_StnryMgr.GetStationeryArray();
    for(INT i=0,nCount=arrStnry.GetSize(); i<nCount; ++i)
    {
    TCHAR szName[_MAX_FNAME] = {0};
    _tsplitpath(arrStnry[i]->szPathName, NULL, NULL, szName, NULL);
    if(dlgNew.m_strName.CompareNoCase(szName) == 0)
    {
    MessageBox("抱歉!指定的新信纸名已经存在,请换一个名字重试。", "错误", MB_OK|MB_ICONERROR);
    return;
    }
    } if(m_StnryMgr.CreateFromCurrentJob(dlgNew.m_strName) >= 0)
    {
    m_strCurStnryName = dlgNew.m_strName;
    RefreshControls();
    InvalidateRect(&m_rectCanvas, FALSE);
    }
    }
    }
      

  11.   

    请注意在dlgNew.DoModal()返回之后,对话框就已经消失了,但是依然可以取得其内部的成员,并且也可以再次弹出——如果你希望这样的话。
      

  12.   

    谢谢各位,不过
    在OnChangettText//当输入框文本改变时
    ((CSupplyShopList *) GetParent())->GetCondition(sql)//这种方式有个bug同时按Ctrl+空格时,得到的输入框值是空的..看来偶只有采用访问表态public变量赋值的形式了
    codewarrior(会思考的草) 与trueadou(木头龙)应该是一样的方法吧.呵呵..
      

  13.   

    上面写错了"表态"->静态
    对了,
    GetParent()->PostMessage(..)
    如果要用这个方式执行父类的某个函数,,,PostMessage(这里应该怎么写呢)   谢谢!!!