69282

Динамічний обмін даними. Функція Initlnstance

Лекция

Информатика, кибернетика и программирование

Динамічний обмін даними (DDX — Dynamic Data Exchange) — це засіб, за допомогою якого можна легко передавати дані між елементами управління діалогового вікна і змінними-членами додатку. Щоб створити змінну DDX, досить клацнути на елементі управління в ресурсах шаблону...

Украинкский

2014-10-02

74.5 KB

0 чел.

Лекція № 2

Тема: Динамічний обмін даними. Функція Initlnstance.

План

  1.  Динамічний обмін даними
  2.  Функція Initlnstance

Динамічний обмін даними

Динамічний обмін даними (DDXDynamic Data Exchange) — це засіб, за допомогою якого можна легко передавати дані між елементами управління діалогового вікна і змінними-членами додатку. Щоб створити змінну DDX, досить клацнути на елементі управління в ресурсах шаблону діалогового вікна і в контекстному меню, що з'явилося, вибрати пункт Add Variable (Додати змінну). Для елементу управління Edit Control (Поле введення) це запустить майстер Add Member Variable Wizard (Майстер додавання змінної-члена), зображений на мал. 1.16. Можна створити два типи змінних DDX.

Змінна DDX, що управляє (DDX Control Variable). Змінна, що управляє, пов'язує елемент управління діалогового вікна із змінною, що є екземпляром класу-оболонки даного елементу управління в бібліотеці MFC. Прикладом такого підходу є клас CEdit. Наявність змінної-члена типу CEdit, прив'язаної до поля введення, дозволяє маніпулювати цим полем за допомогою функцій-членів класу CEdit, уникнувши необхідності використовувати більш трудомісткий спосіб созда-' ния повідомлень Windows. Класі^ї) елементів управління розглядаються в розділі 10 "Елементів управління". Зазвичай цей тип змінної DDX використовується у тому випадку, коли необхідно тим або іншим чином маніпулювати самим елементом управління, наприклад, переміщати або змінювати його розмір.

Змінна значення DDX (DDX Value Variable). Змінна значення пов'язує елемент управління діалогового вікна із змінною MFC, що містить значення цього елементу управління. Наприклад, якщо є поле введення, що містить число, то можна створити змінну значення DDX типу CInt, яка міститиме це значення.


Оскільки мова про маніпулювання самим елементом управління поки не йде, скинемо прапорець Control Variable (Змінна, що управляє). Потім в списку Variable, що розкривається, type (Тип змінної) виберіть тип CString. (У тій версії Visual Studio, з якою працював автор, типу CString не було в списку, тому його доводилося вводити уручну. Якщо в новішій версії цей тип не з'явився, то зробіть те ж саме.) Тепер введемо ім'я змінної-члена, по якому можна звернутися до значення елементу управління. В даному випадку було вибрано ім'я m_strMessageText (див. мал. 1.16). Ще раз перевіривши правильність введеної інформації, клацніть на кнопці Finish (Готово).

Тепер, коли змінна значення DDX створена і підключена до поля введення, залишилося організувати передачу її значення під час виконання. Для цього застосовується функція CDialog: :UpdateData. Щоб використовувати цю функцію, досить викликати її з логічним значенням True як аргумент, якщо необхідно передати дані з елементів управління діалогового вікна змінні, або значенням False, якщо необхідно передати дані змінних в елементи управління діалогового вікна. За умовчанням прийнято значення True. Отже, у функцію OnBnClickedOk діалогового вікна необхідно внести зміни. Якщо вікно редактора коди вже закрите, то щоб відкрити його, досить вибрати в панелі Class View клас CHelloDialogDlg і двічі клацнути на імені функції OnBnClickedOk. Після внесення змін функція повинна виглядати таким чином:

void CHelloDialogDlg::OnBnClickedOk() {

UpdateData(TRUE);

AfxMessageBox(m_strMessageText); //  ONOKO; }

Звернете увагу на звернення до функції UpdateData. Зараз вона передає дані з діалогового вікна в змінні DDX. Це означає, що змінна m_strMessageText набуде значення, введеного користувачем в полі введення діалогового вікна, яке згодом буде відображено при зверненні до функції AfxMessageBox. Відкомпілюйте і запустіть додаток. Результат повинен виглядати подібно до представленого на мал. 1.17.

У справжньому розділі розглядається спадкоємство класів уявлення і їх застосування для доступу до даним, що містяться в документі. Але, перш ніж приступати до вивчення уявлень, розглянемо механізм взаємодії додатку SDI з новостворюваним документом.


Функція
Initlnstance

При створенні нового застосування майстер Appwizard самостійно реалізує перевизначувану функцію Initlnstance згідно параметрам, вибраним користувачем в його діалогових вікнах. Наприклад, якщо вибраний додаток однодокументного інтерфейсу (SDI), то майстер AppWizard створить наступний код:

BOOL CMyApp::Initlnstance() {

//Стандартна ініціалізація

SetDialogBkColor() ;

//Встановити   сірий колір  фону діалог,   вікна

//Загрузіть- параметри стандартного файлу INI

LoadStdProfileSettings();

//  Зареєструвати шаблони документа додатку

// Шаблони документа  виступають  сполучною ланкою між

//  документами,   фреймовими  вікнами і представленнями.

CSingleDocTemplate*  pDocTemplate;

pDocTemplate  = new CSingleDocTemplate(IDR_MAINFRAME,

RUNTIME_CLASS(CMyDoc),

RUNTIME_CLASS(CMainFrame) , // головне  фреймове  вікно  SDI

RUNTIME_CLASS(CMyView)); AddDocTemplate(pDocTemplate);

OnFileNew(); //   створити  порожній документ if (m_lpCmdLine[0]  !=   '\0') {

// TODO: додати код обробки параметрів // командного рядка

}

return TRUE;

}

Функція Initlnstance, яку створює майстер AppWizard, встановлює спочатку сірий колір фону діалогового вікна, а потім завантажує всі параметри стандартного файлу ЇМ, які повинні бути встановлені. Тепер необхідно поклопотатися про основні службові операції: код створює покажчик на шаблон документа, який виступає сполучною ланкою між класом CDocument, класом фреймового вікна і всіма уявленнями, створеними для документа. В даному випадку майстер AppWizard зареєстрував як клас документа клас CMyDoc, як клас фреймового вікна— CMainFrame, а як клас представлення— CMyView. Потім, за допомогою функції-члена AddDocTemplate, програмний код додає тільки що створений шаблон документа до колекції шаблонів документа, а також викликає функцію-член OnFileNew класу CMyDoc, що дозволяє створити порожній документ, необхідний для запуску додатку. Останні рядки цієї функції дозволяють розробникові (в рамках заготівки) додати власний код обробки параметрів командного рядка (наприклад імені файлу, який повинен бути відкритий додатком).


 

А также другие работы, которые могут Вас заинтересовать

41427. КРЕМНІЙ ТА ЙОГО СПОЛУКИ 524 KB
  Гідpoгeнo і глoгeнoвмicнi cпoлуки cилiцiю.Oкcигeнoвмicнi cпoлуки cилiцiю. Bмicт Cилiцiю y зeмнiй кopi cтнoвить 276 вiн icнyє y виглядi тpьox cтбiльниx нyклiдiв: 28Si 9227 29Si 468 т 30Si 305 . Hйбiльш пoшиpeнi oкcид cилiцiюIV SiО2 т piзнi cилiкти.
41428. ЗAГAЛЬHА ХАРАКТЕРИСТИКА МЕТАЛІВ, ЇХ ВЛАСТИВОСТІ 1023.5 KB
  3гльна хpктepиcтик мeтлiв.Kopoзiя мeтлiв.Пpиpoднi cпoлуки мeтлiв. Дoбувння мeтлiв. Bci пepioди пepioдичнoї cиcтeми пoчинaютьcя з мeтaлiв. Bздoвж пepioдiв пocтyпoвo пocлaблюютьcя мeтaлiчнi влacтивocтi eлeмeнтiв i пocилюютьcя нeмeтaлiчнi.
41429. МЕТАЛИ ІІІ ТА IV ГРУП. АЛЮМІНІЙ, ОЛОВО, ЇХ ВЛАСТИВОСТІ ТА ЗАСТОСУВАННЯ 1006.5 KB
  Окcид бopy мє киcлoтний xpктep i є нгiдpидoм бopтнoї киcлoти oкcиди i гiдpoкcиди люмiнiю глiю й iндiю мфoтepнi oкcид i гiдpoкcид тлiюIII мють ocновний xpктep. Bмicт люмiнiю y зeмнiй кopi cтнoвить 8 . вiднoвлeнням xлopидy люмiнiю мeтлiчним клiєм. Hинi вeликi кiлькocтi люмiнiю дoбyвють eлeктpoлiзoм poзплвлeнoї cyмiшi l2О3 з кpioлiтoм N3IF6.
41430. TBEPДICTЬ BOДИ TA METOДИ ЇЇ УCУHEHHЯ 90.5 KB
  Зacтocyвaння твepдoї вoди нeмoжливe в pядi виpoбництв. У paзi тpивaлoгo викopиcтaння твepдoї вoди yтвopюєтьcя тoвcтий шap нaкипy, який нe тiльки зyмoвлює знижeння тeплoпpoвiднocтi cтiнoк aпapaтiв, y якиx кип'ятитьcя вoдa, a й мoжe пpизвecти дo вибyxy внacлiдoк пepeгpiвaння циx aпapaтiв.
41431. МЕТАЛИ ПОБІЧНИХ ПІДГРУП І ТА ІІ ГРУПИ. МІДЬ, ЦИНК 630.5 KB
  Oкcиди мeтлiв фepyмy цинкy тoщo якi yтвopюютьcя пiд чc виплювння вiдoкpeмлюють y виглядi шлкy в пpoцeci плвлeння. Шиpoкo зcтоcoвyютьcя ткoж cплви мiдi нйвжливiшими з якиx є лтyнi cплви мiдi з 20 50 цинкy ткoж iншими мeтлми бpoнзи cплви мiдi з oлoвoм бepилiєм люмiнiєм т iншими мeтлми i мiднoнiкeлeвi cплви. Звдяки бiльш виcoкoмy зpядy ядeр тoмiв eлeмeнтiв пiдгpyпи Цинкy пopiвнянo з пepeдyючими в пepioдх тoмми Cu g u зв'язoк deлeктpoнiв y тoмx Zn Cd Hg з ядpoiм мiцнiший. Toмy eлeмeнти пiдгpyпи Цинкy виявляють y cпoлyкx...
41432. МЕТАЛИ ПОБІЧНИХ ПІДГРУП. ХРОМ, МАРГАНЕЦЬ. ЇХ ВЛАСТИВОСТІ ТА ЗАСТОСУВАННЯ 1.01 MB
  B тaбл. 1 пoдaнo дeякi влcтивocтi eлeмeнтiв пiдгpyпи Xpoмy. У pядy Cr Mo W збiльшyютьcя пoтeнцiли йoнiзцiї; Mo i W внcлiдoк лнтнoїднoгo cтиcнeння мють близькi тoмнi т йoннi pдiycи тoмy Moлiбдeн i Boльфpм з влcтивocтями бiльшe пoдiбнi oдин дo oднoгo нiж дo Xpoмy.15 Mкcимльн кoвлeнтнicть Xpoмy т йoгo нлoгiв дopiвнює 9 пpи цьoмy для їxнix тoмiв нйxpктepнiшi d2spз i d3s sp3гiбpидизoвнi cтни щo вiдпoвiдють кoopдинцiйним чиcлм 6 i 4. Cтiйкими cтyпeнями oкиcнeння для Xpoмy є 3 i 6 для Moлiбдeнy i Boльфpмy здeбiльшoгo ...
41433. МЕТАЛИ ПОБІЧНИХ ПІДГРУП. ЗАЛІЗО. ВЛАСТИВОСТІ ТА ЗАСТОСУВАННЯ 865.5 KB
  Meтли poдини Фepyмy злiзo кoбльт нiкeль дocить ктивнi н вiдмiнy вiд iншиx мeтлiв VIII гpyпи томy їx видiляють в oкpeмy poдинy фepoїди мeтли двox iншиx тpiд пoдiбнi мiж coбoю i дo плтини тoмy їx oб'єднyють y poдинy плтинoвиx мeтлiв плтинoїди. Biдмiннicть y xiмiчнiй ктивнocтi eлeмeнтiв poдин Фepyмy i плтинoвиx мeтлiв пoзнчилcь ткoж н їxнiй гeoxiмiчнiй xpктepиcтицi. B тoй чc як мeтли poдини Фepyмy пepeбyвють лишe y зв'язнoмy cтнi плтинoвi тpпляютьcя як в oдниx i тиx cмиx pyдx тк i в cмopoднoмy cтнi. Дeякi влcтивocтi eлeмeнтiв poдини...
41434. ЛУЖНО-ЗЕМЕЛЬНІ МЕТАЛИ 499 KB
  Bci eлeмeнти гoлoвнoї пiдгpyпи ІІ гpyпи кpiм Бepилiю мють яcкpвo виявлeнi мeтлiчнi влcтивocтi. Ocкiльки зpяд ядp тoмiв циx eлeмeнтiв н oдиницю бiльший нiж y лyжниx мeтлiв тиx cмиx пepioдiв зoвнiшнi eлeктpoни cильнiшe пpитягyютьcя дo ядp щo зyмoвлює бiльшi знчeння eнepгiй йoнiзцiї томiв i мeншy xiмiчнy ктивнicть Бepилiю т йoгo нлoгiв пopiвнянo з лyжними мeтлми. Mкcимльн вoн в глoгeнiдx бepилiю якi з cвoїми влcтивocтями є пpoмiжними мiж cпoлyкми мeтлiв i нeмeтлiв. Дeякi влcтивocтi eлeмeнтiв т пpocтиx peчoвин гoлoвнoї пiдгpyпи ІІ гpyпи Hзв...
41435. ЛУЖHI METAЛИ 285 KB
  3гльн xpктepиcтик лужниx мeтлiв. Дoбувння влcтивocтi і зcтocувння лужниx мeтлiв.Гiдpoкcиди лужниx мeтлiв.Coлi лужниx мeтлiв.