2011-03-29 71 views
0

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

我无法从对话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类constructor.below初始化为1024在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,m_SampleNumber在CCStatsDlg没有得到这始终是1024在构造函数初始化

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

+0

如果您的变量“m_SampleNumber”在其他地方定义,只是删除了“INT米里面的“INT”字符串_SampleNumber = ...“声明,否则你的变量只会在你的if语句中有效。 – oaimac 2011-04-11 10:52:05

回答

0

做你想做什么:
X的功能,您设置的OnClick事件关联菜单项(使用其属性窗口的选项卡) - >这将自动生成MainFrm.h和.cpp文件中的函数。
x实例化一个成员结构或您希望从h获得的变量ardware您CCStatsDlg类.H里面和.cpp
X填写您CCStatsDlg类的OnOK()函数中的变量
X添加CCStatsDlg的.h和.cpp文件中的一个或多个功能,如:

int GetValue1() 

X呼叫您的对话框:

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() 
    } 

希望这将有助于

+0

非常感谢您的回复。 – Vaish 2011-03-30 02:05:34

+0

在读取变量时出现一些问题CSettings dlg;如果(dlg.DoModal()== IDOK) {int m_SampleNumber = dlg.getvalue();} 这是我在CCStatsDlg类中做的,因为我需要在此处理CSettings对话框值。 m_SampleNumber在CCStatsDlg类构造函数中初始化为1024.下面是CSettings类中的getvalue()int CSettings :: getvalue() {return SampleNumber;}即使我以SampleNumber的形式返回2048,CCStatsDlg中的m_SampleNumber也不会获取, 1024在构造函数0123a中被初始化 – Vaish 2011-03-30 02:25:50

+0

@Vaish我不明白你的问题。你可以用你的新代码编辑你的第一篇文章。 – oaimac 2011-03-31 09:29:49

0

所以你需要创建新的CDialog派生窗口,然后显示它。

将这个代码在Click事件:

CMySettingDialog dlg; 
dlg.DoModal(); 

一些例子中,你可以找到herehere