为了账号安全,请及时绑定邮箱和手机立即绑定

请教下怎么在外部类中得到对话框的属性值呢?

请教下怎么在外部类中得到对话框的属性值呢?

元芳怎么了 2023-04-22 22:18:18
在***Doc类中用new实例化了一个对话框,想通过对话框获取用户的设置值,但domodal()之后对话框就已经不能用了,在哪一步获取对话框中的属性值呢!!?
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

定义消息映射
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没有给父窗口,导致的异常
希望可以帮助你,祝你成功

 


查看完整回答
反对 回复 2023-04-26
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

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;

查看完整回答
反对 回复 2023-04-26
  • 2 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信