C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 60 - Передача параметров в DDV функцию / Диалоговые окна / Visual C++

Шаг 60 - Передача параметров в DDV функцию

Нам никто не мешает сделать универсальную функцию. Давайте добавим в описание переменную, меньше которой нельзя ставить.

void AFXAPI DDV_MyInt(CDataExchange* pDX, float t, float min)
{
	if (t<min) 
	{
		AfxMessageBox("error data");
		pDX->Fail(); 
	}
}

А в функции вызова укажем ее.

void CTestDDVDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTestDDVDlg)
	DDX_Text(pDX, IDC_EDIT1, m_Ed1);
	//}}AFX_DATA_MAP
	DDV_MyInt(pDX,m_Ed1,10);
}

Кстати данные проверятся и при попадании их в диалог. Если Вы не установите инициализацию больше 10, то можете получить вот такое сообщение и никакого диалога не увидите.

60_1.gif (6314 b)

Исправим инициализацию и запустим.

CTestDDVDlg::CTestDDVDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestDDVDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestDDVDlg)
	m_Ed1 = 20.0f;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a 
	// subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

Все остальное работает точно также, меньше 10 вводить нельзя. Вводить можно большее количество параметров, например, минимальное и максимальное для цифр.


| |
Автор Каев Артем.
[AD]