SlideShare a Scribd company logo
1 of 7
WinAPI
Модуль 2.1
В даному модулі:
 Win32 додатки з використанням діалогових вікон
 Типи діалогів
 Створення діалогового додатку
 Процедура обробки діалогових вікон
Andriy Gladkyy
KspDevelop@gmail.com 2
Використання діалогових вікон
 Більшість прикладних програм використовує діалогові вікна,
щоб запитати додаткову інформацію для команд, які вимагають
введення даних від користувача.
 Використання діалогового вікна - єдиний рекомендований
засіб для прикладної програми, щоб отримати введення даних.
 Windows надає два типи блоку діалогу: модальне і немодальне:
 Модальное діалогове вікно (modal dialog box) вимагає, щоб
користувач надав інформацію або скасував діалогове вікно для
продовження роботи прикладній програмі.
 Немодальне діалогове вікно (modeless dialog box) дозволяє
користувачеві надавати інформацію і повертатися до
прикладної програми без закриття блоку діалогу.
Andrey Gladky
KspDevelop@gmail.co
m 3
Створення діалогового додатка
Andrey Gladky
KspDevelop@gmail.co
m 4
 Для створення модального діалогу використовується функція
DialogBox:
 а для створення немодального діалогу - CreateDialog:
 Параметри: hInst - дескриптор екземпляра програми (модуля, в
якому знаходиться шаблон); template - ім'я ресурсу, що описує
діалог; parent - дескриптор батьківського вікна; DlgFunc -
діалогова функція наступного формату:
int WINAPI DialogBox(HANDLE hInst, LPCSTR template, HWND parent,
DLGPROC DlgFunc)
HWND WINAPI CreateDialog(HANDLE hInst, LPCSTR template, HWND
parent, DLGPROC DlgFunc)
BOOL CALLBACK DlgFunc(HWND hw, UINT msg, WPARAM wp,
LPARAM lp)
Створення діалогового додатка
Andrey Gladky
KspDevelop@gmail.co
m 5
 При створенні діалогового вікна діалогова процедура отримує
повідомлення WM_INITDIALOG. Якщо у відповідь на це
повідомлення процедура повертає FALSE, діалог не буде створено:
функція DialogBox поверне значення -1, а CreateDialog - NULL.
 Модальное діалогове вікно блокує вказане в якості батьківського
вікно і з'являється поверх нього (незалежно від стилю
WS_VISIBLE). Додаток закриває модальне діалогове вікно за
допомогою функції:
 Додаток повинен викликати цю функцію з діалогової процедури у
відповідь на повідомлення від кнопок "OK", "Cancel" або команди
"Close" з системного меню діалогу. Параметр result передається
програмі як результат повернення з функції DialogBox.
BOOL WINAPI EndDialog(HWND hw, int result)
Створення діалогового додатка
Andrey Gladky
KspDevelop@gmail.co
m 6
 Немодального діалогове вікно з'являється поверх батьківського
вікна, але не блокує його. Програма сама відповідає за
відображення/приховування вікна (за допомогою стилю
WS_VISIBLE і функції ShowWindow). Повідомлення для
немодального діалогового вікна потрапляють в основну чергу
повідомлень програми. Щоб ці повідомлення були коректно
оброблені, слід включити в цикл обробки повідомлень виклик
функції:
 Немодальне діалогове вікно знищується, якщо знищується його
батьківське вікно. У всіх інших випадках програма повинна
сама дбати про знищення немодального діалогового вікна,
використовуючи виклик:
BOOL WINAPI IsDialogMessage(HWND hwDlg, MSG *lpMsg)
BOOL WINAPI DestroyWindow(HWND hw)
Демонстрація
Andrey Gladky
KspDevelop@gmail.co
m 7

More Related Content

Similar to Win api module_2.1

лаб. роб. №1 створення dll-бібліотеки на c++
лаб. роб. №1   створення dll-бібліотеки на c++лаб. роб. №1   створення dll-бібліотеки на c++
лаб. роб. №1 створення dll-бібліотеки на c++
cit-cit
 
вікна та обєкти програм
вікна та обєкти програмвікна та обєкти програм
вікна та обєкти програм
Ann Eres
 
5 клас. Морзе. Урок 17. Діалогові вікна, їх об'єкти. Інформаційні вікна. Ство...
5 клас. Морзе. Урок 17. Діалогові вікна, їх об'єкти. Інформаційні вікна. Ство...5 клас. Морзе. Урок 17. Діалогові вікна, їх об'єкти. Інформаційні вікна. Ство...
5 клас. Морзе. Урок 17. Діалогові вікна, їх об'єкти. Інформаційні вікна. Ство...
Дмитро Загура
 

Similar to Win api module_2.1 (10)

Visual studio 2013 Розробка простого консольного додатка
Visual studio 2013 Розробка простого консольного додаткаVisual studio 2013 Розробка простого консольного додатка
Visual studio 2013 Розробка простого консольного додатка
 
лаб. роб. №1 створення dll-бібліотеки на c++
лаб. роб. №1   створення dll-бібліотеки на c++лаб. роб. №1   створення dll-бібліотеки на c++
лаб. роб. №1 створення dll-бібліотеки на c++
 
розділ 3 перший проект 1
розділ 3 перший проект 1розділ 3 перший проект 1
розділ 3 перший проект 1
 
вікна та обєкти програм
вікна та обєкти програмвікна та обєкти програм
вікна та обєкти програм
 
Лекція 2 - C#
Лекція 2 - C#Лекція 2 - C#
Лекція 2 - C#
 
Lesson # 46. the main components of the application for the operating system ...
Lesson # 46. the main components of the application for the operating system ...Lesson # 46. the main components of the application for the operating system ...
Lesson # 46. the main components of the application for the operating system ...
 
урок 10 вікна та дії з ними
урок 10 вікна та дії з нимиурок 10 вікна та дії з ними
урок 10 вікна та дії з ними
 
Visual basic
Visual basicVisual basic
Visual basic
 
Інформатика 8 клас
Інформатика 8 клас Інформатика 8 клас
Інформатика 8 клас
 
5 клас. Морзе. Урок 17. Діалогові вікна, їх об'єкти. Інформаційні вікна. Ство...
5 клас. Морзе. Урок 17. Діалогові вікна, їх об'єкти. Інформаційні вікна. Ство...5 клас. Морзе. Урок 17. Діалогові вікна, їх об'єкти. Інформаційні вікна. Ство...
5 клас. Морзе. Урок 17. Діалогові вікна, їх об'єкти. Інформаційні вікна. Ство...
 

More from Andrii Hladkyi

NET Framework and C# Module 6.2. Generics
NET Framework and C# Module 6.2. GenericsNET Framework and C# Module 6.2. Generics
NET Framework and C# Module 6.2. Generics
Andrii Hladkyi
 
Net Framework and c# module 2. OOP
Net Framework and c# module 2. OOPNet Framework and c# module 2. OOP
Net Framework and c# module 2. OOP
Andrii Hladkyi
 

More from Andrii Hladkyi (20)

Net framework and C# module 17. Serialization
Net framework and  C# module 17. SerializationNet framework and  C# module 17. Serialization
Net framework and C# module 17. Serialization
 
Net Framework and C# Module 3 4. Inheritance, Abstractions
Net Framework and C# Module 3 4. Inheritance, AbstractionsNet Framework and C# Module 3 4. Inheritance, Abstractions
Net Framework and C# Module 3 4. Inheritance, Abstractions
 
NET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage CollectorNET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage Collector
 
System programing module 2. Threads
System programing module 2. ThreadsSystem programing module 2. Threads
System programing module 2. Threads
 
System programing module 1. Processes
System programing module 1. ProcessesSystem programing module 1. Processes
System programing module 1. Processes
 
NET Framework and C# Module 6.2. Generics
NET Framework and C# Module 6.2. GenericsNET Framework and C# Module 6.2. Generics
NET Framework and C# Module 6.2. Generics
 
NET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, EventsNET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, Events
 
NET Framework and C# Module 5. Interfaces
NET Framework and C# Module 5. InterfacesNET Framework and C# Module 5. Interfaces
NET Framework and C# Module 5. Interfaces
 
Net Framework and c# module 2. OOP
Net Framework and c# module 2. OOPNet Framework and c# module 2. OOP
Net Framework and c# module 2. OOP
 
Net Framework and c# Lesson 1
Net Framework and c# Lesson 1Net Framework and c# Lesson 1
Net Framework and c# Lesson 1
 
Wpf module 2
Wpf module 2Wpf module 2
Wpf module 2
 
Wpf module 1
Wpf module 1Wpf module 1
Wpf module 1
 
Msp module 3
Msp module 3Msp module 3
Msp module 3
 
Msp module 2
Msp module 2Msp module 2
Msp module 2
 
Msp module 1
Msp module 1Msp module 1
Msp module 1
 
Ado.net module 2
Ado.net module 2Ado.net module 2
Ado.net module 2
 
Ado.net module 1
Ado.net module 1Ado.net module 1
Ado.net module 1
 
Design pattern module 1
Design pattern module 1Design pattern module 1
Design pattern module 1
 
Win api module_2.0_gdi+
Win api module_2.0_gdi+Win api module_2.0_gdi+
Win api module_2.0_gdi+
 
Win api module_1.1_ok
Win api module_1.1_okWin api module_1.1_ok
Win api module_1.1_ok
 

Win api module_2.1

  • 2. В даному модулі:  Win32 додатки з використанням діалогових вікон  Типи діалогів  Створення діалогового додатку  Процедура обробки діалогових вікон Andriy Gladkyy KspDevelop@gmail.com 2
  • 3. Використання діалогових вікон  Більшість прикладних програм використовує діалогові вікна, щоб запитати додаткову інформацію для команд, які вимагають введення даних від користувача.  Використання діалогового вікна - єдиний рекомендований засіб для прикладної програми, щоб отримати введення даних.  Windows надає два типи блоку діалогу: модальне і немодальне:  Модальное діалогове вікно (modal dialog box) вимагає, щоб користувач надав інформацію або скасував діалогове вікно для продовження роботи прикладній програмі.  Немодальне діалогове вікно (modeless dialog box) дозволяє користувачеві надавати інформацію і повертатися до прикладної програми без закриття блоку діалогу. Andrey Gladky KspDevelop@gmail.co m 3
  • 4. Створення діалогового додатка Andrey Gladky KspDevelop@gmail.co m 4  Для створення модального діалогу використовується функція DialogBox:  а для створення немодального діалогу - CreateDialog:  Параметри: hInst - дескриптор екземпляра програми (модуля, в якому знаходиться шаблон); template - ім'я ресурсу, що описує діалог; parent - дескриптор батьківського вікна; DlgFunc - діалогова функція наступного формату: int WINAPI DialogBox(HANDLE hInst, LPCSTR template, HWND parent, DLGPROC DlgFunc) HWND WINAPI CreateDialog(HANDLE hInst, LPCSTR template, HWND parent, DLGPROC DlgFunc) BOOL CALLBACK DlgFunc(HWND hw, UINT msg, WPARAM wp, LPARAM lp)
  • 5. Створення діалогового додатка Andrey Gladky KspDevelop@gmail.co m 5  При створенні діалогового вікна діалогова процедура отримує повідомлення WM_INITDIALOG. Якщо у відповідь на це повідомлення процедура повертає FALSE, діалог не буде створено: функція DialogBox поверне значення -1, а CreateDialog - NULL.  Модальное діалогове вікно блокує вказане в якості батьківського вікно і з'являється поверх нього (незалежно від стилю WS_VISIBLE). Додаток закриває модальне діалогове вікно за допомогою функції:  Додаток повинен викликати цю функцію з діалогової процедури у відповідь на повідомлення від кнопок "OK", "Cancel" або команди "Close" з системного меню діалогу. Параметр result передається програмі як результат повернення з функції DialogBox. BOOL WINAPI EndDialog(HWND hw, int result)
  • 6. Створення діалогового додатка Andrey Gladky KspDevelop@gmail.co m 6  Немодального діалогове вікно з'являється поверх батьківського вікна, але не блокує його. Програма сама відповідає за відображення/приховування вікна (за допомогою стилю WS_VISIBLE і функції ShowWindow). Повідомлення для немодального діалогового вікна потрапляють в основну чергу повідомлень програми. Щоб ці повідомлення були коректно оброблені, слід включити в цикл обробки повідомлень виклик функції:  Немодальне діалогове вікно знищується, якщо знищується його батьківське вікно. У всіх інших випадках програма повинна сама дбати про знищення немодального діалогового вікна, використовуючи виклик: BOOL WINAPI IsDialogMessage(HWND hwDlg, MSG *lpMsg) BOOL WINAPI DestroyWindow(HWND hw)