www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

Шаг 37 - Пользовательская функция DDX

Создание проекта

Для работы с этой темой Вас понадобится проект созданный шагами 33-34. В него внесем изменения.

Создаем код

Эту функцию можно вставить сразу после #include
void AFXAPI DDX_MyText(CDataExchange* pDx,int ID,CString& Date )
{
	if (pDx->m_bSaveAndValidate)
	{
		DDX_Text(pDx,ID,Date);
		Date= Date+" Save DDX";
	}
	else
	{
		Date=Date+ " Read DDX";
		DDX_Text(pDx,ID,Date);
	}
}
Изменения в функции обмена
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_MyText(pDX, IDC_EDIT1, m_edit);
}

Описание

Итак мы с Вами создали свою функцию обмена. Зачем это нужно? Пригодится точно. Нопример для перевода строки в число и назад, перевода строки или добавления изменения. Вообщем как фантазия сработает.

Мы обьявили функция как AFXAPI - это модификатор, который устанавливает вызолв функции в соответствии с требованиями MFC. Обьявить её можно в отдельном файле, и тем самым локализовать модификации типов в отдельном файле.

В функцию мы передаем несколько параметров. Первое это обьект, который поддерживает обмен данными. Дальше идентификатор элемента управления и тип передаваемых данных.

CDataExchange знает направление, в котором идет обмен, своё понимание текущей ситуации он хранит в переменной pDx->m_bSaveAndValidate, которую мы и анализируем.

При сохранении мы вызываем функцию DDX_Text дял получения данных и потом модифицируем, а при чтении наоборот - сначала изменяем, а потом вызываем DDX_Text.

Нам осталось только описать её в функции CTestDlg::DoDataExchange, что мы и сделали.

Запускайте. При запуске у Вас в окне должно быть Hello DDX Read DDX, замените его на HI и получите по нажатию на кнопку Ok - Hi Save DDX. У нас получилось, и это очень приятно.


Шпаргалка

Создайте свою функцию DDX
void AFXAPI DDX_MyText(CDataExchange* pDx,int ID,CString& Date )
{
	if (pDx->m_bSaveAndValidate)
	{
          ........
	}
	else
	{
	 .........
	}
}
Вызывайте её для обмена
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_MyText(pDX, IDC_EDIT1, m_edit);
}


Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz