MFC中对话框在DOMODAL()之后就析构了,怎么在外部类中得到对话框的属性值呢?

在***Doc类中用new实例化了一个对话框,想通过对话框获取用户的设置值,但domodal()之后对话框就已经不能用了,在哪一步获取对话框中的属性值呢!!?... 在***Doc类中用new实例化了一个对话框,想通过对话框获取用户的设置值,
但domodal()之后对话框就已经不能用了,在哪一步获取对话框中的属性值呢!!?
展开
 我来答
buffaloliu
2010-04-09 · TA获得超过526个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:300万
展开全部
DoModal() 函数执行完后, 可以利用其返回值知道用户是使用 "OK", 还是 "Cancel" 关闭的窗口, 然后再根据你的需要选择是不是保存参数, 通常情况下过程如下:

1. 定义一个对话框类
class CDlgClass : public CDialog
{
// 正常的 CDialog 成员
int m_A; // 要保存的值, 这个值在对话框里进行修改, 并传出数据
}

2. 使用方法
int A;
CDlgClass * pdlg = new CDlgClass;
if( IDOK==pdlg->DoModal() )
{
A=pdlg->m_A; //
}
delete pdlg;
hopeztm
2010-04-09 · TA获得超过1886个赞
知道小有建树答主
回答量:242
采纳率:100%
帮助的人:116万
展开全部
定义消息映射
BEGIN_MESSAGE_MAP(ParameterDialog, CDialog)
ON_BN_CLICKED(IDOK, &ParameterDialog::OnBnClickedOk)
END_MESSAGE_MAP()

点击后 获取参数值

// ParameterDialog 消息处理程序

void ParameterDialog::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
OnOK();
CString radius,retio,angle;
cradius.GetWindowText(radius);
cangle.GetWindowText(angle);
cretio.GetWindowText(retio);
m_radius = atof(radius);
m_reito = atof(retio);
m_angle = atof(angle);
}
//上层调用 获取参数
void ParameterDialog::getParameter(double &angle,double &retio,double &radius)
{

angle = m_angle;
retio = m_reito;
radius = m_radius;
}
需要注意的是,如果用new 要给这个串口传递this作为 父窗口的指针,或者直接作为局部变量声明也行。我以前出现过,用new没有给父窗口,导致的异常
希望可以帮助你,祝你成功
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ecba46aab
2010-04-09 · TA获得超过2303个赞
知道大有可为答主
回答量:2477
采纳率:100%
帮助的人:1977万
展开全部
为些对话框的控件关联成员变量哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hwliu11
2010-04-09 · TA获得超过438个赞
知道小有建树答主
回答量:665
采纳率:0%
帮助的人:590万
展开全部
把对话框得到的参数保存下来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式