怎样能把从一个对话框中输入的变量,返回到另一个对话框中?? UpdateData()必须在对话框存在的情况下调用,执行DoModal()后窗口已销毁。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你应该在另一个对话框中调用void COtherDlg:ReurnVal() { CDlgThis dlg;if (dlg.DoModal()==IDOK ){copy dlg data members;....... UpdateData(FALSE); } } MFC不是有Dialog Data Exchange机制吗?为什么不用? copy dlg data members!!是是么意思??我应该怎样做呢??我是新手,所以嗯,不太明白!!谢谢!!!怎样用Dialog Data Exchange机制呢??我该怎么办??我再现等待!!各位大哥的回答!!! copy dlg data members!!是是么意思??我应该怎样做呢??我是新手,所以嗯,不太明白!!谢谢!!!怎样用Dialog Data Exchange机制呢??我该怎么办??我再现等待!!各位大哥的回答!!! 解决这个问题有两种方法.第一种方法是设置全局变量,这个比较简单,还是不说的好。第二种方法就是: 假设类CTestDlg,要调用CTest1Dlg中的变量CString m_str。当然这个变量m_str是和某一编辑框有联系的,你当然可以举一反三。 1. 在CTest1Dlg类中加入一函数CString GetStr()(函数名随便);代码如下: CString CTest1Dlg::GetStr() { return m_str; } 2.在CTestDlg中要调用CTest1Dlg中的m_str的函数中加如下代码: void CTestDlg::OnButtonSet() { CString str; CTest1Dlg dlg; if(dlg.DoModal()==IDOK) { str=dlg.GetStr(); //使用变量str; } } Dialog Data Exchange机制是很简单的一个问题。当你把某个变量和控件联系起来之后,如编辑框,VC就会在类的DoDataExchange(CDataExchange* pDX)函数中加入一些东东,如下:{ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTest1Dlg) DDX_Text(pDX, IDC_EDIT1, m_str); //}}AFX_DATA_MAP}当你在函数的构造函数中初始化m_str后,窗口初始化后就调用DoDataExchange函数,所以你就会见到在编辑框中的值就是m_str,当你按OK按钮后,在窗口关闭后也会调用DoDataExchange,把编辑框中的值赋给m_str.UpdateData(FALSE)和UpdateData(TRUE),也可以在编辑框和m_str之间传值。 UpdateDate()必须在对话框存在的情况下调用,你可以在子对话框中定义一个指向父对话框的指针。将变量值传递后,用UpdataDate()函数更新这个指针对应的变量就可以了! 什么什么啊,思路一篇混乱。void CChuShi::ReturnVal() { if( DoModal()==IDOK ){ UpdateData(TRUE); } else { UpdateData(FALSE); } } 显然,这个DoModal()是类CChuShi的函数。DoModal()调用意味着再创建一个自己。可能是外部调用的ReturnVal()来显示一个对话框,但是,在DoModal()过后,对话框已经销毁,不存在了,包括他的子窗口。又怎么让它进行数据交换呢?DoModal()后,对话框自己会进行数据交换(当然,要选择了IDOK),不用你再去费心。 CDlgThis dlg; dlg.xxx = 1;dlg.yyy = 1;if (dlg.DoModal()==IDOK ) { xxx = dlg.xxx;yyy = dlg.yyy;} 在处理OnOk之前要给dlg.xxx和dlg.yyy设上值,如果是关联控件的话,应该updatedata(false); 呃。。我不知道啦,不过我记得UpdateData()和UpdateData(FALSE); 是连在一起的。可以这麽使用吗? CChuShi:m_Variable1...COtherDlg:m_Varible1...实现过程void CChuShi::ReturnVal() { COtherDlg dlg; if(dlg.DoModal()==IDOK) { m_Variable1=dlg.m_Varialbe1; ...... } } ChuShi:m_Variable1... COtherDlg:m_Varible1... 实现过程 重载COtherDlg的OnOK()函数void COtherDlg::OnOK(){ UpdateData(true);}void CChuShi::ReturnVal() { COtherDlg dlg; if(dlg.DoModal()==IDOK) { m_Variable1=dlg.m_Varialbe1; ...... } } 高分求助文件操作问题 1.看不出MoveToEx比MoveTo有方便先进之处啊?只是版本不同.另外, 在winsock spi中如何调用普通socket函数 怎么样建立自己的事件???? 请问如何设置网卡的混杂模式??????????,小弟郁闷很久,希望大虾帮忙!!!!!!!! 关于插入一条记录的问题! 请问在view/doc 模式下如何使用程序设置纸张的大小?? 请教:dwg文件格式问题 新人报到 请教一个有关CDC的问题 奇怪!为何不能进行网络通信? 关于DLL的一个非常简单的问题
void COtherDlg:ReurnVal()
{
CDlgThis dlg;
if (dlg.DoModal()==IDOK )
{
copy dlg data members;
.......
UpdateData(FALSE);
} }
是是么意思??我应该怎样做呢??
我是新手,所以嗯,不太明白!!
谢谢!!!
怎样用Dialog Data Exchange机制呢??我该怎么办??
我再现等待!!各位大哥的回答!!!
是是么意思??我应该怎样做呢??
我是新手,所以嗯,不太明白!!
谢谢!!!
怎样用Dialog Data Exchange机制呢??我该怎么办??
我再现等待!!各位大哥的回答!!!
第一种方法是设置全局变量,这个比较简单,还是不说的好。
第二种方法就是:
假设类CTestDlg,要调用CTest1Dlg中的变量CString m_str。当然这个变量m_str是和某一编辑框有联系的,你当然可以举一反三。
1. 在CTest1Dlg类中加入一函数CString GetStr()(函数名随便);代码如下:
CString CTest1Dlg::GetStr()
{
return m_str;
}
2.在CTestDlg中要调用CTest1Dlg中的m_str的函数中加如下代码:
void CTestDlg::OnButtonSet()
{
CString str;
CTest1Dlg dlg;
if(dlg.DoModal()==IDOK)
{
str=dlg.GetStr();
//使用变量str;
}
}
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTest1Dlg)
DDX_Text(pDX, IDC_EDIT1, m_str);
//}}AFX_DATA_MAP
}当你在函数的构造函数中初始化m_str后,窗口初始化后就调用DoDataExchange函数,所以你就会见到在编辑框中的值就是m_str,当你按OK按钮后,在窗口关闭后也会调用DoDataExchange,把编辑框中的值赋给m_str.UpdateData(FALSE)和UpdateData(TRUE),也可以在编辑框和m_str之间传值。
你可以在子对话框中定义一个指向父对话框的指针。
将变量值传递后,用UpdataDate()函数更新这个指针
对应的变量就可以了!
void CChuShi::ReturnVal()
{
if( DoModal()==IDOK )
{
UpdateData(TRUE);
}
else
{
UpdateData(FALSE);
}
}
显然,这个DoModal()是类CChuShi的函数。
DoModal()调用意味着再创建一个自己。
可能是外部调用的ReturnVal()来显示一个对话框,但是,在DoModal()
过后,对话框已经销毁,不存在了,包括他的子窗口。又怎么让它进行数据交换呢?
DoModal()后,对话框自己会进行数据交换(当然,要选择了IDOK),不用你再去费心。
dlg.xxx = 1;
dlg.yyy = 1;
if (dlg.DoModal()==IDOK )
{
xxx = dlg.xxx;
yyy = dlg.yyy;
}
在处理OnOk之前要给dlg.xxx和dlg.yyy设上值,如果是关联控件的话,应该updatedata(false);
COtherDlg:m_Varible1...
实现过程
void CChuShi::ReturnVal()
{
COtherDlg dlg;
if(dlg.DoModal()==IDOK)
{
m_Variable1=dlg.m_Varialbe1;
......
}
}
COtherDlg:m_Varible1...
实现过程 重载COtherDlg的OnOK()函数void COtherDlg::OnOK()
{
UpdateData(true);
}void CChuShi::ReturnVal()
{
COtherDlg dlg;
if(dlg.DoModal()==IDOK)
{
m_Variable1=dlg.m_Varialbe1;
......
}
}