关于Tab Control控件的菜鸟问题!

kangte 2009-08-27 03:10:10
一个窗口(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)没有反映,但肯定值是传过去了,就是控件刷新问题,请问怎么解决?
...全文
130 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
kangte 2009-08-27
  • 打赏
  • 举报
回复
刚刚试了tttyd的方法也OK!哈哈这上面高手真多!
kangte 2009-08-27
  • 打赏
  • 举报
回复
解决了,是其他地方的问题!!晕!呵呵!感谢大家!特别感谢fishion!!和Ghost90...fishion的方法正确.啥也不说了给分!!
Ghost90 2009-08-27
  • 打赏
  • 举报
回复
一个窗口(Main)这个是对话框的派生类吗???
雪影 2009-08-27
  • 打赏
  • 举报
回复
你这个错误是因为代码中含有全角字符导致的.
你把空格都删除
kangte 2009-08-27
  • 打赏
  • 举报
回复
to tttyd

error C2018: unknown character '0xa1' 报了8个
"(GetParent()->GetParent())" 都可以是吗?? 
Ghost90 2009-08-27
  • 打赏
  • 举报
回复
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);
雪影 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 kangte 的回复:]
tttyd 您 "Main  *pdlg = (Main*)(GetParent()->GetParent());"  编译报错
[/Quote]
报什么错误?
kangte 2009-08-27
  • 打赏
  • 举报
回复
tttyd 您 "Main *pdlg = (Main*)(GetParent()->GetParent());"  编译报错
kangte 2009-08-27
  • 打赏
  • 举报
回复
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;
}
雪影 2009-08-27
  • 打赏
  • 举报
回复
void DLG1::OnButton1() 
{
CString s="a";
Main *pdlg = (Main*)(GetParent()->GetParent());    //Main为对话框类名
pdlg->m_t = s; //对控件赋值,注意m_t要为CEdit在对话框中管理的CString变量
pdlg->UpdateData(false); //更新窗口
fishion 2009-08-27
  • 打赏
  • 举报
回复
是主窗口的话,这样是没问题的
Main *pdlg = (Main *)AfxGetMainWnd();
pdlg ->SetDlgItemText(IDC_EDIT1,s); //ID对了没
ghvvvv 2009-08-27
  • 打赏
  • 举报
回复
学习下..同埋帮LZ顶一个
kangte 2009-08-27
  • 打赏
  • 举报
回复
Main是主窗口!

fishion 2009-08-27
  • 打赏
  • 举报
回复
一个窗口(Main)是主窗口不?如果不是的话,就不能用我的方法了,你可以给DLG1添加一个Main的成员变量,DLG1.m_Main = this;
kangte 2009-08-27
  • 打赏
  • 举报
回复
感谢fishion,Ghost90
Main *pdlg = (Main *)AfxGetMainWnd();
pdlg ->SetDlgItemText(IDC_EDIT1,s);

我试了还是没有反映,值是传过去了,就是控件没刷新!

Main *pDlg=(Main *)GetParent();
pDlg->m_t="abc";
pDlg->UpDateData(FALSE);
也试了,点击后直接退出了!
Ghost90 2009-08-27
  • 打赏
  • 举报
回复
[code=c/c++]
Main *pDlg=(Main *)GetParent();
pDlg->m_t="abc";
pDlg->UpDateData(FALSE);
[/code]
fishion 2009-08-27
  • 打赏
  • 举报
回复
Main *pdlg = (Main *)AfxGetMainWnd();
pdlg ->SetDlgItemText(IDC_EDIT1,s);

你的是这样?
aa3000 2009-08-27
  • 打赏
  • 举报
回复
Main dlg; 是临时变量不能这样用的。

应该把 Main 的实例指针传给 DLG1,才能使用。
kangte 2009-08-27
  • 打赏
  • 举报
回复
感谢dirdirdir3 但要是用您的方法回又打开一个Main窗口,我不想新打开一个!
fishion的方法我试了,还是没有反映!
dirdirdir3 2009-08-27
  • 打赏
  • 举报
回复
还没有domodal,当然不能用updatedata........
Main dlg;    //Main为主窗口
//dlg.ShowWindow(TRUE);
dlg.m_t = s;    //m_t为主窗口上Edit Box控件变量
 dlg.DoModal();
加载更多回复(1)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧