АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Обмен данными между окном диалога и приложением

Читайте также:
  1. A) Прямая зависимость между ценой и объемом предложения.
  2. III Угол между прямой и плоскостью.
  3. III. ПРОМЕЖУТОЧНЫЕ СОСТОЯНИЯ МЕЖДУ ЗДОРОВЬЕМ И БОЛЕЗНЬЮ
  4. IV Международную научную конференцию
  5. S: Установите соответствие между категориями мобильности и характеризующими их признаками.
  6. S: Установите соответствие между типом общества и экономическим развитием данного общества.
  7. S: Установить соответствие между типами общества и их характеристиками.
  8. Анатомия и физиология как науки, их взаимосвязь между ними.
  9. Белое вещество занимает пространство между корой и базальными ядрами. Его массу составляют нервные волокна, идущие в различных направлениях и образующие проводящие пути.
  10. БИОФИЗИКА ТРАНСКАПИЛЛЯРНОГО ОБМЕНА
  11. В каком из приведенных случаев возможно протекание реакции обмена?
  12. В небольших дозах используются как средства при диспепсии, возникающей вследствие хронических заболеваний, а также как диуретики и повышающие обменные процессы в организме.

 

Такой обмен реализуется с помощью функций с префиксом DDX (dialog date exchange). Он возможен, поскольку объекты класса диалог создаются раньше реального появления окна на экране и остаются в памяти после закрытия окна. При вызове метода UpdateData(TRUE) (обмен элемент->приложение, FALSE в обратном направлении) им вызывается метод DoDataExchange(). Методом UpdаtеData() используются стандартные методы CDialog::OnInitDialog() и CDialog::OnOk()

Для формы:

 

Мастером классов будет автоматически сгенерирован примерно такой текст:

void CMyDialog::DoDataExchange(CDataExchange* pDX)

{ CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CMyDialog).

DDX_Text(pDX, IDC_EDIT1, m_ed1);

DDV_MaxChars(pDX, m_ed1, 10);

DDX_Text(pDX, IDC_EDIT2, m_ed2i);

DDV_MinMaxInt(pDX, m_ed2i, 0, 100);

//}}AFX_DATA_MAP }

Функции DDX_... осуществляет обмен данными, методы DDV (dialog data violation) осуществляют проверку достоверности данных прежде чем записать их в поле класса диалога. DDV функции вызываются сразу после соответствующих DDX функций.

При необходимости можно использовать собственные DDV функции. Однако стоит располагать их вне блока AFX_DATA_MAP, иначе мастер классов не сможет продолжить сою работу. При необходимости можно так же определить и свою DDX функцию, которая так же, как и стандартные должна иметь 3 параметра:

1. Указатель на объект CDataExchange

2. Идентификатор ресурса элемента управления

3. Ссылку на переменную для обмена

Заголовок может иметь приблизительно такой вид:

void AFXAPI DDX_MyF(CDataExchange* pDX, Int nIDC, int& m_value)

{

…}

В классе CDataExchange объявлена переменная флаг m_bSaveAndValidate, принимающая значение TRUE если обмен идет из элемента управления в переменные класса и FALSE при обратном направлении. Переменная m_pDlg_Wnd представляет собой указатель на окно диалога, с которым производится обмен. Кроме переменных в этом классе определены и методы PrepareCtrl() и PrepareEditCtrl(), обеспечивающие подготовку элементов управления диалога к обмену. Метод Fail() можно использовать для предотвращения исключительно в случае ошибки при обмене или недостоверности данных


1 | 2 | 3 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)