一个窗口(Main)上有一个Tab Control控件,同时还有一个Edit Box.请问怎么把Tab Control控件上的值传入Edit Box控件.
其中Tab Control控件包括三个窗口DLG1,DLG2,DLG3在DLG1上添加一个按扭,按扭函数为:
void DLG1::OnButton1() 
{
CString s="a";
Main dlg;    //Main为主窗口
//dlg.ShowWindow(TRUE);
    dlg.m_t = s;    //m_t为主窗口上Edit Box控件变量
     dlg.UpdateData(false);

提示"试图执行系统不支持操作".
如果去掉UpdateData(false)没有反映,但肯定值是传过去了,就是控件刷新问题,请问怎么解决?

解决方案 »

  1.   

    CYourMain *pdlg = (CYourMain *)AfxGetMainWnd();
    pdlg ->SetDlgItemText(IDC_EDIT1,s);
      

  2.   

    还没有domodal,当然不能用updatedata........
    Main dlg;    //Main为主窗口 
    //dlg.ShowWindow(TRUE); 
      dlg.m_t = s;    //m_t为主窗口上Edit Box控件变量 
     dlg.DoModal(); 
      

  3.   

    感谢dirdirdir3 但要是用您的方法回又打开一个Main窗口,我不想新打开一个!
    fishion的方法我试了,还是没有反映!
      

  4.   

    Main dlg; 是临时变量不能这样用的。应该把 Main 的实例指针传给 DLG1,才能使用。
      

  5.   

    Main *pdlg = (Main *)AfxGetMainWnd(); 
    pdlg ->SetDlgItemText(IDC_EDIT1,s);你的是这样?
      

  6.   


    Main *pDlg=(Main *)GetParent();
    pDlg->m_t="abc";
    pDlg->UpDateData(FALSE);
      

  7.   

    感谢fishion,Ghost90
    Main *pdlg = (Main *)AfxGetMainWnd(); 
    pdlg ->SetDlgItemText(IDC_EDIT1,s); 我试了还是没有反映,值是传过去了,就是控件没刷新!Main *pDlg=(Main *)GetParent(); 
    pDlg->m_t="abc"; 
    pDlg->UpDateData(FALSE); 
    也试了,点击后直接退出了!
      

  8.   

    一个窗口(Main)是主窗口不?如果不是的话,就不能用我的方法了,你可以给DLG1添加一个Main的成员变量,DLG1.m_Main = this;
      

  9.   

    是主窗口的话,这样是没问题的
    Main *pdlg = (Main *)AfxGetMainWnd(); 
    pdlg ->SetDlgItemText(IDC_EDIT1,s); //ID对了没
      

  10.   

    void DLG1::OnButton1() 

       CString s="a"; 
        Main  *pdlg = (Main*)(GetParent()->GetParent());    //Main为对话框类名
        pdlg->m_t = s;  //对控件赋值,注意m_t要为CEdit在对话框中管理的CString变量
        pdlg->UpdateData(false); //更新窗口
      

  11.   

    Main确实是主窗口! IDC_EDIT1也对!
    但是确实没有反映,是不是别的地方出错了,Tab Control控件会吗,需要有什么属性设置吗?
    我的Tab Control控件初始化代码:
    void Main::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    int CurSel = m_tab.GetCurSel();   //m_tab是Tab Control控件变量!

    switch(CurSel)
    {
    case 0:
       dlgs.ShowWindow(TRUE);
       dlgd1.ShowWindow(FALSE);
       dlgd2.ShowWindow(FALSE);
       break;
    case 1:

       dlgs.ShowWindow(FALSE);
       dlgd2.ShowWindow(FALSE);
       dlgd1.ShowWindow(TRUE);
       
     break;
    case 2:
       dlgs.ShowWindow(FALSE);
       dlgd1.ShowWindow(FALSE);
       dlgd2.ShowWindow(TRUE);
     break;
    default:
     break;
    }
    *pResult = 0;
    }
      

  12.   

    tttyd 您 "Main  *pdlg = (Main*)(GetParent()->GetParent());"  编译报错
      

  13.   

    CYourMain *pdlg = (CYourMain *)AfxGetMainWnd(); 
    pdlg ->GetDlgItem(IDC_EDIT)->SetWindowText("OK");

    Main *pDlg=(Main *)GetParent(); 
    pDlg ->GetDlgItem(IDC_EDIT)->SetWindowText("OK");这个退出??想想
    Main *pDlg=(Main *)GetParent(); 
    pDlg->m_t="abc"; 
    pDlg->UpDateData(FALSE); 
      

  14.   

    to  tttyderror C2018: unknown character '0xa1' 报了8个
    "(GetParent()->GetParent())" 都可以是吗?? 
      

  15.   

    一个窗口(Main)这个是对话框的派生类吗???
      

  16.   

    解决了,是其他地方的问题!!晕!呵呵!感谢大家!特别感谢fishion!!和Ghost90...fishion的方法正确.啥也不说了给分!!
      

  17.   

    刚刚试了tttyd的方法也OK!哈哈这上面高手真多!