Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2008, 20:16   #1
mahsus
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 14
По умолчанию CDialog передача параметров!

доброе время суток!
вопрос таков: есть главное окно. По событию кнопки вызывается дополнительное диалоговое окно, где предлагается заполнить несколько EditBox'ов. по событию кнопки IDC_AddBtn я делаю все необходимое и выхожу так:
EndDialog(IDC_AddBtn);
В обработчике главного окна я делаю так:

Код:
NewRecDlg dlg;

	INT_PTR nResponce=dlg.DoModal(); //мое доп. диалог
	if (nResponce==IDC_AddBtn)
	{
		CString str;
		dlg.m_FioEdit.GetWindowTextA(str);
	}
так вот GetWindowTextA(str) уже не работает, нет доступа.
Как мне "забрать" данные из EditBox'ов диалогового окна.Помогите пожалуйста.
благодарю за ответ.

moderator: Используйте тег <CODE>

Последний раз редактировалось merax; 08.03.2008 в 11:38.
mahsus вне форума Ответить с цитированием
Старый 07.03.2008, 21:19   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

В MFC для таких вещей DoDataExchange используется. Скажем, если класс (модального диалога) объявлен вот так:
Код:
class CMyDlg : public CDialog
{
	DECLARE_DYNAMIC(CMyDlg)

public:
	CMyDlg(CWnd* pParent = NULL);   // standard constructor
	virtual ~CMyDlg();
// Dialog Data
	enum { IDD = IDD_DIALOG1 };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedOk();
	CString m_Text;
};
То в его DoDataExchange надо дописать: "DDX_Text(pDX, IDC_EDIT1, m_Text);":
Код:
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT1, m_Text);
}
и тогда после
Код:
	CMyDlg.DoModal();
можно будет спокойно "изучать" переменную
CMyDlg.m_Text (класса CString);
B_N вне форума Ответить с цитированием
Старый 07.03.2008, 21:50   #3
mahsus
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 14
По умолчанию

сделал как вы сказали, создал переменную для EditBox диалогового окна
CString m_sFioEdit
пишу так:

Код:
INT_PTR nResponce=dlg.DoModal();
	if (nResponce==IDC_AddBtn)
	{
		CString str;
		str=dlg.m_sFioEdit;
	}
но в переменной m_sFioEdit ничего нет, т.е. "". даже UpdateData не помогает...

Последний раз редактировалось merax; 08.03.2008 в 11:39.
mahsus вне форума Ответить с цитированием
Старый 07.03.2008, 21:58   #4
mahsus
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 14
По умолчанию

sorry... все работает, спасибо, нужно было сделать UpdateData(true), а не false!
mahsus вне форума Ответить с цитированием
Старый 09.03.2008, 17:40   #5
НЕ_АЙС
Форумчанин
 
Регистрация: 18.04.2007
Сообщений: 135
По умолчанию

Непонятно только какое отношение это всё имеет к .NET
Забудьте уже про старый глючный MFC.
НЕ_АЙС вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача параметров aesoem Общие вопросы Delphi 8 15.07.2008 21:51
Сохранение параметров программы... Roof Общие вопросы Delphi 10 11.10.2007 08:22
Передача параметров программе при её запуске troo Общие вопросы Delphi 7 13.05.2007 21:22
Передача параметров Gudzon Общие вопросы Delphi 12 08.02.2007 08:19
передача объектов как параметров функций в Dll Umen Общие вопросы Delphi 9 12.11.2006 19:31