猿问

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

在***Doc类中用new实例化了一个对话框,想通过对话框获取用户的设置值,
但domodal()之后对话框就已经不能用了,在哪一步获取对话框中的属性值呢!!?

元芳怎么了
浏览 172回答 2
2回答

人到中年有点甜

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

慕桂英3389331

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;
随时随地看视频慕课网APP
我要回答