从主父对话(MFC)菜单弹出对话框?

时间:2011-03-29 03:40:24

标签: visual-c++ mfc

@oaimac,

我无法从对话框CSettings中读取变量 我不确定此代码中有什么问题

void CCStatsDlg::OnClickSettings()
 {   

 CSettings dlg;

if (dlg.DoModal () == IDOK)

 //Problem is here I am not getting the expected value

   {
         int m_SampleNumber = dlg.getvalue ();
   }
}

我在CCStatsDlg类中这样做,因为我需要在这里处理CSettings对话框值。 m_SampleNumber在CCStatsDlg类构造函数中初始化为1024.below是CSettings类中的getvalue()

CSettings::CSettings(CWnd* pParent /*=NULL*/)
: CDialog(CSettings::IDD, pParent)

{

  SampleNumber =2048;

}

CSettings::~CSettings()

{
}

void CSettings::DoDataExchange(CDataExchange* pDX)

{
CDialog::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDIT_SAMPLE1, SampleNumber);

}

int CSettings::getvalue()

  {

   return SampleNumber;

  } 

即使我将2048作为SampleNumber返回,CCStatsDlg中的m_SampleNumber也没有得到,这总是1024在构造函数中初始化

所以请帮我解决这个问题。感谢

2 个答案:

答案 0 :(得分:0)

因此您需要创建新的CDialog派生窗口然后显示它。

将此代码放在点击事件上:

CMySettingDialog dlg;
dlg.DoModal();

您可以找到一些示例herehere

答案 1 :(得分:0)

做你想做的事:
x将函数关联到“设置”菜单项的OnClick事件(例如,使用其属性窗口的选项卡) - >这将自动生成MainFrm.h和.cpp文件中的函数
x实例化一个成员结构,或者你想从CCStatsDlg类.h和.cpp中的硬件获取的变量
x在CCStatsDlg类的OnOK()函数内填充变量 x在CCStatsDlg .h和.cpp文件中添加一个或多个函数,如:

int GetValue1()

用以下方法调用对话框:

    CCStatsDlg dlg ();  
    if dlg.DoModal () == IDOK
    {
       // Here you can get your variables values once OK is clicked inside your dialog box
       int value1 = dlg.GetValue1 ()
    }

希望这会有所帮助