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

发布于 2024-10-27 10:17:21 字数 903 浏览 3 评论 0 原文

@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。下面是 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

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

@oaimac,

I am not able to read the variable from dialog CSettings
I am not sure what is is wrong in this code

void CCStatsDlg::OnClickSettings()
 {   

 CSettings dlg;

if (dlg.DoModal () == IDOK)

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

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

This i am doing in CCStatsDlg class because i need to process CSettings dialog values here. m_SampleNumber is initialized to 1024 in the CCStatsDlg class constructor.below is the getvalue() in CSettings class

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;

  } 

Even if i return 2048 as SampleNumber, m_SampleNumber in CCStatsDlg is not getting which is always 1024 which was initialized in constructor

So please help me out on this. Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

要走干脆点 2024-11-03 10:17:21

做你想做的事:
x 将函数关联到“设置”菜单项的 OnClick 事件(例如使用其属性窗口的选项卡)->这将自动生成 MainFrm.h 和 .cpp 文件中的函数
x 在 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 ()
    }

希望这会有所帮助

to do what you want :
x associate a function to the OnClick event of your Settings menu item (using the tabs of its property windows for example) -> this will generate automatically the function inside the MainFrm.h and .cpp files
x instantiate a member structure, or variables you want to get from your hardware inside your CCStatsDlg class .h and .cpp
x fill your variables inside the OnOK () function of your CCStatsDlg class
x add one or more functions inside your CCStatsDlg .h and .cpp files like :

int GetValue1()

x call your dialogbox with :

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

Hope this will help

々眼睛长脚气 2024-11-03 10:17:21

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

将此代码放入点击事件中:

CMySettingDialog dlg;
dlg.DoModal();

您可以在此处此处

so you need create new CDialog derived window and then show it.

Put this code to on click event:

CMySettingDialog dlg;
dlg.DoModal();

Some sample you can find here and here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文