Всплывающий диалог из меню основного родительского диалога (MFC)? - PullRequest
0 голосов
/ 29 марта 2011

@ 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 инициализируется значением 1024 в конструкторе класса CCStatsDlg. Ниже приведено описание getvalue () в классе CSettings

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, который был инициализирован в конструкторе

Так что, пожалуйста, помогите мне в этом. Спасибо

Ответы [ 2 ]

0 голосов
/ 29 марта 2011

, чтобы сделать то, что вы хотите:
x связать функцию с событием OnClick вашего пункта меню Настройки (например, с помощью вкладок в окнах его свойств) -> это автоматически сгенерирует функцию внутри MainFrm.h и.cpp файлы
x создают структуру члена или переменные, которые вы хотите получить от вашего оборудования внутри вашего класса CCStatsDlg .h и .cpp
x заполняют ваши переменные внутри функции OnOK () вашего класса CCStatsDlg
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 голосов
/ 29 марта 2011

, поэтому вам нужно создать новое производное окно CDialog и затем показать его.

Поместите этот код в событие щелчка:

CMySettingDialog dlg;
dlg.DoModal();

Некоторые образцы вы можете найти здесь и здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...