Различия
Показаны различия между двумя версиями страницы.
— | dialogovye_okna [2021/07/31 21:57] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Диалоговые окна С++ ====== | ||
+ | Диалоговые окна существуют модальные(modal dialog box создаются функцией DialogBox)и немодальные (modeless dialog box создаются функцией CreateDialog). Эти две функции загружают шаблон диалогового окна из исполняемого файла прикладной программы и создают выскакивающее окно, которое соответствует спецификации шаблона. Имеются и другие функции, | ||
+ | |||
+ | Чтобы создать или модальное, | ||
+ | |||
+ | **Шаблон диалогового окна** - это двоичные данные, | ||
+ | |||
+ | ===== Органы управления диалогового окна ===== | ||
+ | Шаблон устанавливает позицию, | ||
+ | |||
+ | Для каждого органа управления шаблон устанавливает значения стиля, которые определяют внешний вид и работу органа управления. Каждый орган управления - это дочернее окно и, поэтому, | ||
+ | |||
+ | Шаблон может также установить стили, специфические для класса окна органа управления. Например, | ||
+ | |||
+ | Система преобразует значения координат позиции, | ||
+ | |||
+ | Шаблон определяет класс окна для каждого органа управления. Обычно диалоговое окно содержит органы управления, | ||
+ | |||
+ | <note tip> | ||
+ | </ | ||
+ | Чтобы разрешить пользователю закрыть диалоговое окно, шаблон должен установить, | ||
+ | |||
+ | Шаблон устанавливает также и необязательный текст и данные для создания органа управления. Текст обычно предназначен для обозначения кнопок управления или установки начального содержания текста статического органа управления. Данные для создания - это один или несколько байтов данных, | ||
+ | |||
+ | ===== Процедуры диалогового окна ===== | ||
+ | Процедура диалогового окна | ||
+ | |||
+ | Каждая процедура диалогового окна имеет нижеследующую форму: | ||
+ | < | ||
+ | BOOL CALLBACK DlgProc(HWND hwndDlg, UINT message, | ||
+ | WPARAM wParam, LPARAM lParam) | ||
+ | { | ||
+ | switch (message) | ||
+ | { | ||
+ | |||
+ | // Здесь место расположения сообщения. | ||
+ | |||
+ | default: | ||
+ | return FALSE; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | Параметры процедуры служат одной и той же цели, что и в оконной процедуре, | ||
+ | |||
+ | Большинство процедур диалогового окна обрабатывает сообщение [[WM_INITDIALOG]] и сообщения [[WM_COMMAND]], | ||
+ | ====== DialogBox -модальные ====== | ||
+ | Модальные диалоговые окна блокируют работу всех остальных окон до тех пока они не будут закрыты. При создании модального диалогового окна, система делает его активным окном. Диалоговое окно остается активным до тех пор, пока процедура диалогового окна не вызовет функцию EndDialog, или система не активизирует окно в другом приложении. Ни пользователь, | ||
+ | |||
+ | < | ||
+ | INT_PTR WINAPI DialogBox( | ||
+ | __in_opt | ||
+ | __in LPCTSTR lpTemplate, // обязательный параметр: | ||
+ | // называется IDD_DIALOG1, | ||
+ | __in_opt | ||
+ | __in_opt | ||
+ | ); | ||
+ | </ | ||
+ | Пример WinAPI приложения. Нет главного окна. Все приложение построено на диалоговых окнах. | ||
+ | < | ||
+ | /* | ||
+ | WinAPI приложение. Нет главного окна. Все приложение построено на диалоговых окнах. | ||
+ | По нажатию правой клавиши мыши появляется дочернее окно. | ||
+ | |||
+ | Что бы программа заработала нужно создать файл ресурсов диалоговыми окнами: | ||
+ | */ | ||
+ | #include < | ||
+ | #include < | ||
+ | #include " | ||
+ | |||
+ | LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // прототип функции WndProc | ||
+ | INT_PTR CALLBACK DialogProc(HWND , UINT , WPARAM ,LPARAM );// прототип функции диалогового окна | ||
+ | INT_PTR CALLBACK DialogProc1(HWND , UINT , WPARAM ,LPARAM ); | ||
+ | |||
+ | int WINAPI _tWinMain(HINSTANCE hInstance, // дескриптор текущего экземпляра окна | ||
+ | | ||
+ | | ||
+ | | ||
+ | ) | ||
+ | { // | ||
+ | DialogBox(GetModuleHandle(NULL), | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | INT_PTR CALLBACK DialogProc(HWND hWnddialog, UINT uMsg, WPARAM ,LPARAM )// прототип функции диалогового окна | ||
+ | { switch (uMsg) | ||
+ | { | ||
+ | case WM_RBUTTONDOWN: | ||
+ | // | ||
+ | break; | ||
+ | case WM_CREATE: | ||
+ | { | ||
+ | |||
+ | }break; | ||
+ | case WM_CLOSE: | ||
+ | EndDialog(hWnddialog, | ||
+ | break; | ||
+ | default: | ||
+ | return false; | ||
+ | } | ||
+ | |||
+ | //return false; | ||
+ | } | ||
+ | |||
+ | INT_PTR CALLBACK DialogProc1(HWND hWnddialog, UINT uMsg, WPARAM ,LPARAM )// прототип функции диалогового окна | ||
+ | { switch (uMsg) | ||
+ | { | ||
+ | case WM_CLOSE: | ||
+ | EndDialog(hWnddialog, | ||
+ | break; | ||
+ | default: | ||
+ | return false; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ====== CreateDialog -немодальные | ||
+ | |||
+ | < | ||
+ | // Глобальные переменные: | ||
+ | HWND hwndInfo = NULL; // дескриптор немодального окна. Проверять, | ||
+ | ... | ||
+ | |||
+ | case WM_COMMAND: | ||
+ | if (LOWORD(wParam) == IDOK) | ||
+ | { | ||
+ | |||
+ | if (!IsWindow(hwndInfo)) | ||
+ | { | ||
+ | hwndInfo = CreateDialog(GetModuleHandle(NULL), | ||
+ | ShowWindow(hwndInfo, | ||
+ | } | ||
+ | |||
+ | return (INT_PTR)TRUE; | ||
+ | } | ||
+ | } | ||
+ | break; | ||
+ | |||
+ | </ |
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга