- •О.С. Зеленський
- •Розділ 9. Структура створення додатків
- •9.1. Загальна структура додатків
- •9.2. Додатки без використання архітектури «Документ-вид»
- •9.2.1. Приклад додатку реєстрації wnd-класу вікна
- •9.2.2. Створення та видалення дочірніх вікон без використання архітектури «Документ-Вид»
- •9.2.3. Створення дочірніх вікон без використання архітектури «Документ-Вид» (переключення вікон з використанням функції ShowWindow)
- •9.3. Архітектура «Документ-Вид»
- •Idr_mainframe формат строкового ресурсу.
- •9.3.1. Приклад додатку з використанням архітектури «Документ-Вид»
- •9.3.2. Види у архітектурі «Документ-Вид»
- •9.3.3. Створення видів у архітектурі «Документ-Вид» (переключення видів з використанням функції ShowWindow)
- •9.3.4. Робота з документами та видами на прикладі додатку SingleTemplate
- •9.4. Додатки mdi, робота з шаблонами
- •9.4.1. Приклад додатку mdi з одним шаблоном
- •9.4.2. Приклад додатку mdi з декількома шаблонами
- •Контрольні питання
- •Розділ 10. Робота з базами даних з використанням об'єктів ado
- •10.1.1. Ініціалізація об'єктів com з використанням директиви #import
- •10.1.2. Підтримка класів сом
- •10.2. Об'єкт Connection
- •10.3. Об'єкт Command
- •10.4. Об'єкт Recordset
- •10.5. Об'єкт Field і колекція Fields
- •10.6. Об'єкт Error і колекція Errors
- •10.8. Коротка характеристика структури мови sql
- •10.9. Синтаксис оператора вибору Select
- •10.10. Приклад програмування об'єктів ado
- •10.11. Опис розробленого навчального пакету ado6 для роботи з базами даних access та MySql
- •Int tip_bd; // тип бд 1- ms access, 2- MySql, 3 - xml
- •Void Connect_Baza(cString str);
- •Void ErrMessage(_com_error &ce);
- •If(pConn.CreateInstance("adodb.Connection"))
- •If(pRecordset.CreateInstance("adodb.RecordSet"))
- •Void cAdo6Doc::ErrMessage(_com_error &ce)
- •Void cAdo6Doc::OnMsaccess()
- •Void cAdo6Doc::OnMysql()
- •Void cAdo6Doc::OnXmlRead()
- •Void cAdo6Doc::Connect_Baza(cString str)
- •Virtual void DoDataExchange(cDataExchange* pDx);
- •Void cAdo6Dlg::DoDataExchange(cDataExchange* pDx)
- •Void cAdo6Dlg::Struct_MySql()
- •Void cAdo6Dlg::OnSelchangeListBaza()
- •Void cAdo6Dlg::OnVibor_bd()
- •Void cAdo6Dlg::AccessOpen()
- •Void cAdo6Dlg::xmlOpen()
- •Void cAdo6Dlg::Structura_bd()
- •Void cAdo6Dlg::OnSelchangeListTab()
- •Void cAdo6Dlg::show(int kod, int kod_bd)
- •Void cAdo6Dlg::Recordset_Baza(cString str)
- •Void cAdo6Dlg::OnClose()
- •10.11.2. Формування списку бд (MySql), відкриття бази даних (ms access), відкриття xml-файлу, формування списку таблиць (MySql і ms access) та полів (MySql, ms access, xml)
- •Void cAdo6Dlg::OnSelchangeListTab()
- •1. Обрану таблицю необхідно брати в зворотні лапки "`", щоб виключити помилку в тому випадку, якщо в імені таблиці будуть зустрічатися пробіли.
- •10.11.3. Робота з sql-запитами
- •Void cAdo6Dlg::OnZapros_Select()
- •If (str_query.Mid(0,6).Compare("select"))
- •If(!baza.Left(3).Compare("otl") &&
- •Void cAdo6Dlg::Recordset_Baza(cString str)
- •Void cado6Dlg::OnZapros_Make()
- •Vr_zap.Format(" Запрос выполнен за %f сек ",conec - nach);
- •10.11.4. Видалення, сортування, пошук, фільтрація, оновлення набору записів
- •Void cado6Dlg::OnZapis_Delete()
- •Void cado6Dlg::OnCheck_Sort()
- •Void cado6Dlg::OnFind()
- •0L,adSearchForward,bb);
- •Void cado6Dlg::OnFilter()
- •Void cado6Dlg::OnVozvrat()
- •10.11.5. Переходи по записах
- •Void cado6Dlg::OnButtonFirst()
- •Void cado6Dlg::OnButtonLast()
- •Void cado6Dlg::OnButtonLeft()
- •Void cado6Dlg::OnButtonRight()
- •Void cado6Dlg::OnButtonRecno()
- •Void cado6Dlg::OnButtonPgup()
- •Void cado6Dlg::OnButtonPgdn()
- •Void cado6Dlg::OnButtonBookmark()
- •10.11.6. Запис даних до xml-файлу
- •Void cAdo6Dlg::OnButtonSave()
- •10.11.7. Кнопки, призначені тільки для роботи з otl_tab
- •Void cado6Dlg::OnZapis_Add1()
- •Void cado6Dlg::OnZapis_Add2()
- •Void cado6Dlg::OnZapis_Update1()
- •Void cado6Dlg::OnZapis_Update2()
- •Void cado6Dlg::OnFormir_bd()
- •Void cAdo6Dlg::OnValues_Fields()
- •10.12. Використання у якості джерела даних електронної таблиці Excel
- •Контрольні питання
- •Завдання
- •Розділ 11. Програмування для інтернет
- •11.1. Створення броузера
- •11.3. Використання протоколу http
- •If ((pInternetSession)
- •11.4. Використання протоколу ftp
- •Контрольні питання
- •Розділ 12. Створення елементів activex
- •12.1. Створення елементів ActiveX
- •Invalidate();
- •12.2. Тестування елемента ActiveX
- •12.4. Створення елемента ActiveX на базі стандартних елементів
- •12.5. Відображення елементів ActiveX
- •Контрольні питання
- •Розділ 13. Налагодження програм
- •Int data[5];
- •Invalidate();
- •13.3. Установка точки переривання
- •13.2. Покрокове виконання програми
- •13.4. Перевірка значень змінних під час виконання програми
- •Контрольні питання
- •Список літератури
- •Додатки
Контрольні питання
1. Що таке точка переривання?
2. Чи можливо встановити декілька точок переривання?
3. Чи можна встановити точку переривання на рядках що містять оголошення змінних?
4. Яким чином можна перевірити значення змінних під час виконання програми?
Список літератури
1. Холзнер С. Visual C++ 6: учебный курс – СПб: ЗАО "Издательство «Питер»", 1999. – 576 с.
2. Грегори К. Использование Visual C++ 6. Учебное пособие – СПб: К.: Издательский дом "Вильямс", 1999. – 864 с.
3. Олафсен Ю., Скрайбнер К., Уайт К. MFC и Visual C++ 6. Энциклопедия программиста – СПб.: ООО "ДиаСофтЮП", 2003. – 992 с.
4. Секунов Н.Ю. Самоучитель Visual C++ 6. – СПб.: БХВ – Санкт-Петербург, 1999. – 960 с.
5. Зеленский А.С., Лысенко В.С., Баран С.В. Методические указания к выполнению лабораторных и индивидуальных работ на основе типовых примеров разработки программного обеспечения в Visual C++ 6.0 по дисциплине «Новые информационные технологии» для магистров специальности «Экономическая кибернетика» (программа «Информационный менеджмент») // ГВУЗ “КНЭУ имени Вадима Гетьмана” Криворожский экономический институт – Кривой Рог: КЭИ – 2007. – 63 с.
6. Зеленский А.С., Лысенко В.С., Баран С.В. Методические указания для самостоятельного изучения работы с базами данных на Visual C++ с использованием объектов ActiveX Data Object (ADO) по дисциплинам «Мониторинг информационных технологий», «Информационные системы в экономике», «Автоматизация проэктирования информационных систем» // ГВУЗ “КНЭУ имени Вадима Гетьмана” Криворожский экономический институт – Кривой Рог: КЭИ – 2008. – 54 с.
7. Зеленский А.С., Лысенко В.С. Методические указания использования объектов ADO при работе с базами данных на Visual C++ в примерах по дисциплинам: «Мониторинг информационных технологий», «Информационные системы в экономике», «Автоматизация проэктирования информационных систем» (практическая основа для выполнения лабораторних, индивидуальных, курсових и дипломних работ) // ГВУЗ “КНЭУ имени Вадима Гетьмана” Криворожский экономический институт – Кривой Рог: КЭИ – 2008. – 65 с.
8. Зеленський О.С., Лисенко В.С., Афанасьєв І.Є. Методичні вказівки до самостійного вивчення структур створення додатків в Visual C++ з дисциплін: «Об’єктно-орієнтоване програмування», «Інформаційні системи в економіці», «Інструментальні засоби прикладного програмування» // ДВНЗ “КНЕУ імені Вадима Гетьмана” Криворізький економічний інститут – Кривий Ріг: КЕІ – 2009. – 62 с.
9. Зеленський О.С., Лисенко В.С., Афанасьєв І.Є. Методичні вказівки для самостійної роботи студентів спеціальності «Економічна кібернетика» та студентів напряму підготовки «Програмна інженерія». Програмування діалогів у Visual C++ // ДВНЗ “КНЕУ імені Вадима Гетьмана” Криворізький економічний інститут – Кривий Ріг: КЕІ – 2010. – 49 с.
Додатки
Таблиця А.1
Стилі класу вікна (CS – Class Style)
Назва |
Опис |
CS_BYTEALIGNCLIENT |
Вирівнює робочу область вікна на границю байта. Це вирівнювання впливає на ширину вікна та його горизонтальне розташування |
CS_BYTEALIGNWINDOW |
Вирівнює вікно на границю байта. Це вирівнювання впливає на ширину вікна та його горизонтальне розташування |
CS_CLASSDC |
Назначає контекст пристрою, який буде розподілятися між усіма вікнами даного класу |
CS_DBLCLKS |
Вікно може отримувати повідомлення подвійного натиснення мишею |
CS_GLOBALCLASS |
Клас розміщується у глобальній пам’яті |
CS_HREDRAW |
Перемальовується все вікно, якщо змінилась ширина робочої області |
CS_NOCLOSE |
Робить недоступною команду <Закрыть> в меню вікна |
CS_OWNDC |
Кожне вікно має свій контекст пристрою |
CS_PARENTDC |
Вікно використовує контекст дисплею батьківського вікна |
CS_SAVEBITS |
Дозволяє зберегти у пам’яті частину екрана закриту даним вікном (у вигляді бітового образу). При закритті даного вікна частина екрану, яка була закрита вікном відновлюється не через повідомлення WM_PAINT, а із збереженого зображення із пам’яті. Чим більше вікно, тим більше часу необхідно для його відображення / закриття (виділяється більше пам’яті, довше буде копіюватись та відновлюватись зображення). Тому цей стиль корисний для невеликих вікон (наприклад: меню, діалогове вікно), які зазвичай використовують невеликий інтервал часу. |
CS_VREDRAW |
Перемальовується все вікно, якщо змінилась висота робочої області |
Таблиця А.2
Константи типу DWORD, що визначають параметри вікон у Windows
Назва |
Опис |
WS_BORDER |
Задає вікно, що має рамку без заголовка |
WS_CAPTION |
Задає вікно, що має заголовок і рамку. Як правило, цей стиль використовується для вікон, що перекриваються, і не може застосовуватися спільно зі стилем WS_DLGFRAME |
WS_CHILD |
Установлює стиль дочірнього вікна; не може використовуватися спільно зі стилем WS_POPUP. Вікна з цим стилем будуть розміщуватися усередині батьківського вікна. |
WS_CLIPCHILDREN |
Виключає область, зайняту дочірнім вікном, з області малювання батьківського вікна; використовується тільки для батьківських вікон |
Продовження таблиці А.2
Назва |
Опис |
WS_CLIPSIBLINGS |
Виключає всі інші дочірні вікна зі своєї області малювання; якщо дочірні вікна перекриваються, а цей стиль не зазначений, то при зміні робочої області одного з вікон можуть бути зіпсовані робочі області інших дочірніх вікон; цей стиль використовується тільки разом зі стилем WS_CHILD |
WS_DISABLED |
Задає неактивне вікно, тобто відразу після його створення вікно недоступно для введення з клавіатури або за допомогою миші |
WS_DLGFRAME |
Задає вікно, що має подвійну рамку й не має заголовку |
WS_GROUP |
Визначає перший елемент керування групи вікон, до яких користувач може переходити за допомогою клавіш зі стрілками; всі елементи керування, певні із цим стилем, закінчують поточну й починають нову групу (одна група закінчується там, де починається інша) |
WS_HSCROLL |
Задає вікно, що має горизонтальну смугу прокручування |
WS_VSCROLL |
Задає вікно, що має вертикальну смугу прокручування |
WS_MAXIMIZE |
Задає відображення вікна в розгорнутому виді |
WS_MAXIMIZEBOX |
Задає вікно, що має кнопку "Розгорнути"; якщо вікно є дочірнім вікном елемента керування, те цей прапор стилю використається під іншим ім'ям — WS_TABSTOP |
WS_MINIMIZE |
Задає відображення вікна у вигляді піктограми; використається тільки зі стилем WS_OVERLAPPED |
WS_MINIMIZEBOX |
Задає вікно, що має кнопку "Згорнути"; якщо вікно є дочірнім вікном елемента керування, то цей прапор стилю використається під іншим ім'ям — WS_GROUP |
WS_OVERLAPPED |
Установлює, що вікно перекривається; має заголовок і рамку |
WS_POPUP |
Задає спливаюче вікно; не може використовуватись спільно зі стилем WS_CHILD |
WS_SYSMENU |
Задає вікно, що має піктограму системного меню в смузі, заголовка |
WS_TABSTOP |
Призначається одному або декільком елементам керування для того, щоб між ними можна було переміщатися за допомогою клавіші табуляції <Tab> |
WS_THICKFRAME |
Задає вікно, що має стовщену рамку, за допомогою якої можна змінювати розмір вікна |
WS_VISIBLE |
Установлює режим, коли вікно стає видимим відразу після створення; цей стиль в основному використовується для вікон діалогу |
Крім перерахованих стилів вікон Windows, у файлі "winuser.h" визначені стилі, що є комбінацією найбільш часто використовуваних стилів | |
WS_OVERLAPPEDWINDOW |
Комбінація стилів WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX і WS_MAXIMIZEBOX |
WS_POPUPWINDOW |
Комбінація стилів WS_POPUP, WS_BORDER і WS_SYSMENU |
Таблиця А.3
Розширені стилі вікна
Назва |
Опис |
WS_EX_ABSPOSITION |
Визначає, що позиція вікна задається в абсолютних одиницях щодо лівого верхнього кута екрана |
WS_EX_ACCEPTFILES |
Визначає, що вікно допускає перетаскування файлів (drag-and-drop) |
WS_EX_CLIENTEDGE |
Надає "тривимірний ефект" границі вікна, клієнтська область при цьому як би втиснена у вікно |
WS_EX_CONTEXTHELP |
Включає знак питання в заголовок вікна; коли користувач натискає на цей знак, то курсор змінюється на курсор із знаком питання; якщо тепер вибрати яке-небудь дочірнє вікно — воно одержить повідомлення WM_HELP |
WS_EX_CONTROLPARENT |
Дозволяє користувачеві переміщатися по дочірніх вікнах батьківського вікна, використовуючи для цього клавішу табуляції <Tab> |
WS_EX_DLGMODALFRAME |
Задає вікно, що має подвоєну границю, що при використанні спільно зі стилем WS_CAPTION дозволяє створювати вікно зі смугою заголовка |
WS_EX_LEFT |
Установлює для вікна властивість лівого вирівнювання (за замовчуванням) |
WS_EX_LEFTSCROLLBAR |
Задає розташування смуги прокручування (якщо вона є) з лівої сторони робочої (клієнтської) області вікна |
WS_EX_LTRREADING |
Використається за замовчуванням і визначає природний порядок (ліворуч праворуч) для більшості мов уведення й читання тексту |
WS_EX_MDICHILD |
Задає дочірнє вікно MDI |
WS_EX_NOPARENTNOTIFY |
Визначає, що дочірнє вікно, створене із цим стилем, не посилає повідомлення WM_PARENTNOTIFY своєму батьківському вікну при створенні або знищенні |
WS_EX_RIGHT |
Установлює залежно від класу вікна групову властивість правого вирівнювання |
WS_EX_RIGHTSCROLLBAR |
Задає розташування смуги прокручування (якщо вона є) із правої сторони робочої (клієнтської) області вікна; використається за замовчуванням |
WS_EX_RTLREADING |
Визначає порядок уведення й читання тексту праворуч ліворуч |
WS_EX_SMCAPTION |
Задає вікно, що має зменшену висоту смуги заголовка; використається при створенні "плаваючих" панелей інструментів |
WS_EX_STATICEDGE |
Визначає вікно, що має тривимірний стиль границі, заданий для використання в елементах, до яких користувач не одержує доступу (статичні елементи керування) |
WS_EX_TOOLWINDOW |
Задає вікно, що використається для створення "плаваючої" панелі інструментів; таке вікно має скорочену смугу заголовка й не відображається на панелі задач |
Продовження таблиці А.3
Назва |
Опис |
WS_EX_TOPMOST |
Задає вікно, що буде розташовуватися поверх всіх вікон (створених без цього стилю); для установки або скидання цього біта можна використати функцію SetWindowPos |
WS_EX_TRANSPARENT |
Задає прозоре вікно, тобто не закриваючого іншого вікна, розташовані "під ним"; повідомлення WM_PAINT таке вікно одержує до того, як це повідомлення одержують всі вікна того ж рівня, але розташовані "під ним" |
WS_EX_WINDOWEDGE |
Задає вікно, що має підняту границю для створення "тривимірного ефекту" |
Так само, як у випадку основних стилів, для розширених визначені два комбінованих додаткових стилі "winuser.h"; | |
WS_EX_OVERLAPPEDWINDOW |
Комбінація стилів WS_EX_CLIENTEDGE і WS_EX_WINDOWEDGE |
WS_EX_PALETTEWINDOW |
Комбінація стилів WS_EX_WINDOWEDGE, WS_EX_SMCAPTION і WS_EX_TOPMOST |